此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能;Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局。

效果图:

代码:

自定义GridView

<menu.menudemo.ui.view.ZQScrollGridView
android:id="@+id/home_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#E4E4E4"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:horizontalSpacing="1dp"
android:listSelector="#00000000"
android:numColumns="3"
android:scrollbars="none"
android:verticalSpacing="1dp"
></menu.menudemo.ui.view.ZQScrollGridView>

首页代码

/**
* 首页
*/
public class HomeFragment extends Fragment implements View.OnClickListener { private View view;
private TextView tv_sign;
private Intent intent;
private ZQScrollGridView gridView; private static HomeAdapter adapter;
public static List<Integer> listPosition;
public static List<UserBean> list;
private static ACache aCache; private Context context; @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home, container, false);
} @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
view = getView();
aCache = ACache.get(getActivity());
context = getActivity();
initView();
} public void initView() {
tv_sign = (TextView) view.findViewById(R.id.home_sign);
tv_sign.setOnClickListener(this);
gridView = (ZQScrollGridView) view.findViewById(R.id.home_gridview);
onLoad();
} public void onLoad() {
adapter = new HomeAdapter(getActivity());
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(onItemClickListener);
gridView.setOnItemLongClickListener(onItemLongClickListener);
showData();
} /*****
* 刷新数据
*/
private void notifyData() {
adapter.notifyDataSetChanged();
} @Override
public void onClick(View v) {
switch (v.getId()) { }
} public Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
showLongClick(false);
} else if (msg.what == 2)//删除
{
showDelete();
}
}
}; AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == (listPosition.size() - 1)) {
intent = new Intent(getActivity(), SearchActivity.class);
intent.putExtra("list", (Serializable) listPosition);
startActivityForResult(intent, 1);
}
else { } }
};
AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { if (position == (listPosition.size() - 1)) {
return false;
}
showLongClick(true);
Message msg = new Message();
msg.what = 1;// 删除
msg.obj = 1;
LoginFragmentActivity.handler.sendMessage(msg);
return false;
}
}; @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == 1) {
if (data.getStringExtra("key").equals("2")) {
listPosition.clear();
listPosition = HomeData.POSITION(aCache);
notifyData();
}
}
}
} private void showData() {
listPosition = HomeData.POSITION(aCache);
list = new ArrayList<UserBean>();
for (int i = 0; i < 34; i++) {
UserBean user = new UserBean(HomeData.IMG[i], HomeData.TITLE[i], false, false);
list.add(user);
}
notifyData();
} /***
* 删除
*/
private void showDelete() {
//删除缓存
String home = "";
for (int i = 0; i < listPosition.size() - 1; i++) {
UserBean userBean = list.get(listPosition.get(i));
if (!userBean.isCheck()) {
home += listPosition.get(i) + ",";
}
}
aCache.remove("home");
listPosition.clear();
try {
UtilFileDB.ADDFile(aCache, "home", home.substring(0, (home.length() - 1)));
if (listPosition == null || listPosition.size() <= 1) {
listPosition = HomeData.POSITION(aCache);
}
} catch (Exception e) {
listPosition.add((list.size()-1));//只留加号
}
showLongClick(false);
} /****
* 重新刷新数据
*
* @param isvisibility
*/
private void showLongClick(boolean isvisibility) {
list.clear();
for (int i = 0; i < 34; i++) {
UserBean user = new UserBean(HomeData.IMG[i], HomeData.TITLE[i], false, isvisibility);
list.add(user);
}
HomeFragment.list.get(33).setIsvisibility(false);
notifyData();
}
}

由于代码太多未完全给出,源码直接下载即可(点击下载)

源码点击下载:https://github.com/DickyQie/android-small-project

Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像的更多相关文章

  1. Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 2015-03-10 22:38 28419人阅读 评论(17) 收藏 举报  分类: Android ...

  2. Android控件Gridview实现多个menu模块,可添加可删除

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  3. Android控件-ViewPager(仿微信引导界面)

    什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v ...

  4. android控件库(2)-仿Google Camera 的对焦效果

    一直很喜欢Google Camera的自动对焦效果,今日闲来无事,自己做了个: 废话不多说,代码才是王道: package com.example.test.view; import com.exam ...

  5. Android 控件进阶修炼-仿360手机卫士波浪球进度控件

    技术:Android+java   概述 像360卫士的波浪球进度的效果,一般最常用的方法就是 画线的方式,先绘sin线或贝塞尔曲线,然后从左到右绘制竖线,然后再裁剪圆区域. 今天我这用图片bitma ...

  6. Android控件之ImageSwticher

    Android控件之ImageSwticher 1. ImageSwticher介绍 ImageSwitcher是图片切换的控件,它能实现图片切换时的动画效果,包括图片导入效果.图片消失效果等等.An ...

  7. iOS仿支付宝首页效果

    代码地址如下:http://www.demodashi.com/demo/12776.html 首先看一下效果 状态栏红色是因为使用手机录屏的原因. 1.问题分析 1.导航栏A有两组控件,随着tabl ...

  8. iOS仿支付宝首页的刷新布局效果

    代码地址如下:http://www.demodashi.com/demo/12753.html XYAlipayRefreshDemo 运行效果 动画效果分析 1.UI需要变动,向上滑动的时候,顶部部 ...

  9. Android控件介绍

    1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...

随机推荐

  1. NOIP复赛

    [代码为王] http://www.cnblogs.com/codeisking [洛谷] http://www.luogu.org/ NOIP2015 金币 扫雷游戏 求和 推销员 枚举 数学 优先 ...

  2. 实现类似QQ对话聊天功能脚本

    var skin : GUISkin; var showChat = false;private var inputField = "";private var display = ...

  3. 批量删除wps文档里的回车符的方法!WPS使用技巧分享!

    有时候整理文档的时候,如果是从网上复制的文字,可能会因为复制而产生很多的回车符.怎样能批量去掉这些个回车符呢,下面马上告诉你批量删除wps文档里的回车符的方法!WPS使用技巧分享! 想要批量删除批量删 ...

  4. C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)-来自转载收集

    using System; using System.IO; using System.Text; /// <summary> /// FileEncoding 的摘要说明 /// < ...

  5. 通过java反射,封装bean

    上周有一个封装javabean的流程,成员变量有好多,一路写if(!=null){setXXX} 真的好麻烦,有时候一不小心还会漏掉,很是麻烦,就想到用反射的方法自动进行拼装bean. bean pa ...

  6. Webservice简介

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...

  7. Ninject之旅之八:Ninject插件模型(附程序下载)

    摘要 在前面的章节中,我们看了在单一的绑定条件下Ninject能够处理依赖类型,就是说,每个服务类型只绑定到单一的实现类型.然而,有些情况下我们需要绑定一个抽象服务类型到多个实现,这叫多个绑定.多个绑 ...

  8. Mac下命令行中用sublime打开指定文件 设置方法

    sublime2版本 官网提供的方法:sublime2 官网提供的方法是:ln -s "/Applications/Sublime Text 2.app/Contents/SharedSup ...

  9. ubuntu软件推荐

    本文推荐的ubuntu工具均为笔者亲用.原则:在精不在多. 0.万能类 笔者崇尚[极简主义],常用的工具如果有网页版的就尽量不用单独的client.如网页版微信. 1.系统类 截图:Deepin-sc ...

  10. ajax同步异步问题

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去 ...