此案例主要讲的是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实现多个menu模块,可添加可删除的更多相关文章

  1. Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像

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

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

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

  3. UIAutomator定位Android控件的方法

    UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...

  4. Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)

    本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...

  5. 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39777951 在本人之前的一篇文章<<Appium基于安卓的各种FindEle ...

  6. UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    在本人之前的一篇文章<<Appium基于安卓的各种FindElement的控件定位方法实践和建议>>第二章节谈到Appium可以通过使用UIAutomator的方法去定位And ...

  7. Android控件介绍

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

  8. Robotium之Android控件定位实践和建议

    本人之前曾经撰文描述Appium和UIAutomator框架是如何定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议Appium基于安卓的各种FindEl ...

  9. Android控件RecyclerView的基本用法

    Android控件RecyclerView的基本用法 转 https://www.jianshu.com/p/e71a4b73098f   github: https://github.com/Cym ...

随机推荐

  1. 使用 JsPlumb 绘制拓扑图的通用方法

    摘要: 实现 JsPlumb 绘制拓扑图的通用方法. 只要服务端返回一个符合指定格式的数据结构,就可以绘制相应的拓扑图. 难度: 中级 示例工程见:  http://download.csdn.net ...

  2. DIV内容垂直居中

    css垂直居中属性设置vertical-align: middle对div不起作用,例如: <!DOCTYPE html> <html lang="zh-CN"& ...

  3. tomcat性能调优 大赞

    从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü MemoryUsage 我 们也在第三天的学习中对Apa ...

  4. 文件系统、服务、防火墙、SELINUX——安全四大金刚

    一提到安全,大家都会想到防火墙,和文件系统权限.而实际工作环境中,我们在Linux的安全配置,会涉及到四个级别.我们思考一个场景,你要在百度盘中存放一个文件,这个动作需要考虑下面四个权限. 1 fir ...

  5. Git 的安装步骤

    Git 的安装步骤 一.下载Git Git 的官网:https://git-scm.com/ 在 Git 的官网中点击Downloads,进入如下页面: 选择对应的操作系统,以博主为例,点击Windo ...

  6. troubleshooting-sqoop mysql导入hive 报:GC overhead limit exceeded

    Halting due to Out Of Memory Error...18/09/13 21:42:17 INFO mapreduce.Job: Task Id : attempt_1536756 ...

  7. 如何让VS2012编写的程序在XP下运行

    Win32主程序需要以下设置 第一步:在工程属性General设置 第二步:在C/C++ Code Generation 设置 第三步:SubSystem 和  Minimum Required Ve ...

  8. IMAP协议命令(详细)

    参照:http://www.cnblogs.com/qiubole/archive/2007/11/23/970180.html 转载:http://blog.sina.com.cn/s/blog_5 ...

  9. Problem F: 等式

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 104  Solved: 22[Submit][Status][Web Board] Descriptio ...

  10. boot sector FAT