一、概述

之前写过一篇文章也是关于360安全卫士布局的,发现有很多朋友比较感兴趣,鉴于此这次继续再完善一下。先说一下思路:

1、继续使用ViewPager来滑动切换页面

2、使用GridView来显示各个图片和文字

 二、代码

1、ViewPager的实现:

[java] view plaincopy

  1. importjava.util.ArrayList;
  2. importcom.example.demo_360.MainActivity.ImageInfo;
  3. importcom.example.demo_360.R;
  4. importandroid.content.Context;
  5. importandroid.os.Vibrator;
  6. importandroid.support.v4.view.PagerAdapter;
  7. importandroid.support.v4.view.ViewPager;
  8. importandroid.util.Log;
  9. importandroid.view.LayoutInflater;
  10. importandroid.view.View;
  11. importandroid.view.ViewGroup;
  12. importandroid.widget.AdapterView;
  13. importandroid.widget.AdapterView.OnItemLongClickListener;
  14. importandroid.widget.BaseAdapter;
  15. importandroid.widget.GridView;
  16. importandroid.widget.ImageView;
  17. importandroid.widget.TextView;
  18. publicclassMyPagerAdapterextendsPagerAdapter {
  19. privateVibrator vibrator;
  20. privateArrayList<ImageInfo> data;
  21. privateContext context;
  22. publicMyPagerAdapter(Context context, ArrayList<ImageInfo> data) {
  23. this.context = context;
  24. this.data = data;
  25. vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
  26. }
  27. @Override
  28. publicintgetCount() {
  29. return2;
  30. }
  31. @Override
  32. publicbooleanisViewFromObject(View arg0, Object arg1) {
  33. returnarg0 == arg1;
  34. }
  35. @Override
  36. publicObject instantiateItem(ViewGroup container,finalintindex) {
  37. Log.v("test", index +"index");
  38. View view = LayoutInflater.from(context).inflate(R.layout.grid, null);
  39. GridView gridView = (GridView) view.findViewById(R.id.gridView1);
  40. gridView.setNumColumns(2);
  41. gridView.setVerticalSpacing(5);
  42. gridView.setHorizontalSpacing(5);
  43. gridView.setAdapter(newBaseAdapter() {
  44. @Override
  45. publicintgetCount() {
  46. return8;
  47. }
  48. @Override
  49. publicObject getItem(intposition) {
  50. returnposition;
  51. }
  52. @Override
  53. publiclonggetItemId(intposition) {
  54. returnposition;
  55. }
  56. @Override
  57. publicView getView(intposition, View convertView, ViewGroup parent) {
  58. View item = LayoutInflater.from(context).inflate(
  59. R.layout.grid_item, null);
  60. ImageView iv = (ImageView) item.findViewById(R.id.imageView1);
  61. iv.setImageResource((data.get(index * 8+ position)).imageId);
  62. TextView tv = (TextView) item.findViewById(R.id.msg);
  63. tv.setText((data.get(index * 8+ position)).imageMsg);
  64. returnitem;
  65. }
  66. });
  67. gridView.setOnItemLongClickListener(newOnItemLongClickListener() {
  68. @Override
  69. publicbooleanonItemLongClick(AdapterView<?> arg0, View arg1,
  70. intarg2,longarg3) {
  71. View view = arg1;
  72. view.setVisibility(View.INVISIBLE);
  73. vibrator.vibrate(2500);
  74. returntrue;
  75. }
  76. });
  77. ((ViewPager) container).addView(view);
  78. returnview;
  79. }
  80. }

对于ViewPager的用法,不明白的朋友可以看一下我之前的文章,里面有介绍。

2、Activity的实现,

[java] view plaincopy

  1. importjava.util.ArrayList;
  2. importcom.example.adapter.MyPagerAdapter;
  3. importandroid.os.Bundle;
  4. importandroid.app.Activity;
  5. importandroid.support.v4.view.ViewPager;
  6. importandroid.view.Menu;
  7. /**
  8. * @author wang
  9. */
  10. publicclassMainActivityextendsActivity {
  11. privateArrayList<ImageInfo> data;
  12. @Override
  13. publicvoidonCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. initData();
  17. ViewPager vpager = (ViewPager) findViewById(R.id.vPager);
  18. vpager.setAdapter(newMyPagerAdapter(MainActivity.this, data));
  19. vpager.setPageMargin(50);//设置页面之间的差距
  20. }
  21. privatevoidinitData() {
  22. data = newArrayList<ImageInfo>();
  23. data.add(newImageInfo("抢火车票", R.drawable.tool_box_ticket));
  24. data.add(newImageInfo("系统体检", R.drawable.tool_box_system_exam));
  25. data.add(newImageInfo("快速拨号", R.drawable.tool_box_quickdial));
  26. data.add(newImageInfo("网络设置", R.drawable.tool_box_network));
  27. data.add(newImageInfo("流量监控", R.drawable.tool_box_feescan));
  28. data.add(newImageInfo("宝盒", R.drawable.tool_box_baohe));
  29. data.add(newImageInfo("短信监控", R.drawable.smsunread));
  30. data.add(newImageInfo("设置监控",
  31. R.drawable.tabicon_black_white_list_normal));
  32. data.add(newImageInfo("通话监控", R.drawable.tabicon_call_record_normal));
  33. data.add(newImageInfo("信息设置", R.drawable.tabicon_sms_record_normal));
  34. data.add(newImageInfo("恶意广告拦截", R.drawable.title_bar_set_logout));
  35. data.add(newImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
  36. data.add(newImageInfo("内存监控", R.drawable.traffic_main_unchecked));
  37. data.add(newImageInfo("防火墙", R.drawable.traffic_main_unchecked));
  38. data.add(newImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
  39. data.add(newImageInfo("内存监控", R.drawable.traffic_main_unchecked));
  40. data.add(newImageInfo("防火墙", R.drawable.traffic_main_unchecked));
  41. }
  42. @Override
  43. publicbooleanonCreateOptionsMenu(Menu menu) {
  44. getMenuInflater().inflate(R.menu.activity_main, menu);
  45. returntrue;
  46. }
  47. publicclassImageInfo {
  48. publicString imageTitle;
  49. publicintimageId;
  50. publicImageInfo(String title,intid) {
  51. imageId = id;// 图片资源
  52. imageTitle = title;//图片标题
  53. }
  54. }
  55. }

3、xml布局:
   布局主要涉及到三个,一是Activity的布局,需要用到ViewPager控件了。

[java] view plaincopy

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="@drawable/main_screen_bg">
  6. <ImageView
  7. android:id="@+id/logo"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:paddingLeft="10dp"
  11. android:paddingTop="10dp"
  12. android:src="@drawable/main_notify_logo"/>
  13. <ImageView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_alignBottom="@+id/logo"
  17. android:layout_toRightOf="@+id/logo"
  18. android:src="@drawable/main_screen_logo"/>
  19. <FrameLayout
  20. android:layout_width="fill_parent"
  21. android:layout_height="fill_parent"
  22. android:layout_below="@+id/logo"
  23. android:focusable="false"
  24. android:focusableInTouchMode="false">
  25. <android.support.v4.view.ViewPager
  26. android:id="@+id/vPager"
  27. android:layout_width="fill_parent"
  28. android:layout_height="wrap_content"/>
  29. <RelativeLayout
  30. android:layout_width="fill_parent"
  31. android:layout_height="wrap_content"
  32. android:focusable="false"
  33. android:focusableInTouchMode="false">
  34. <ImageView
  35. android:id="@+id/set"
  36. style="@style/main_button"
  37. android:layout_alignParentRight="true"
  38. android:layout_alignTop="@+id/vPager"
  39. android:layout_marginRight="5dp"
  40. android:layout_marginTop="20dp"
  41. android:background="@drawable/mainscreen_bg_selector"
  42. android:clickable="true"
  43. android:src="@drawable/main_menu_normal"/>
  44. <ImageView
  45. android:id="@+id/two"
  46. style="@style/main_button"
  47. android:layout_alignLeft="@+id/set"
  48. android:layout_below="@+id/set"
  49. android:layout_marginTop="20dp"
  50. android:background="@drawable/mainscreen_bg_selector"
  51. android:clickable="true"
  52. android:src="@drawable/main_bg_normal"/>
  53. <ImageView
  54. style="@style/main_button"
  55. android:layout_alignLeft="@+id/set"
  56. android:layout_below="@+id/two"
  57. android:layout_marginTop="20dp"
  58. android:background="@drawable/mainscreen_bg_selector"
  59. android:clickable="true"
  60. android:src="@drawable/appmgr_upgrade_edition_brief"/>
  61. </RelativeLayout>
  62. </FrameLayout>
  63. </RelativeLayout>

二是GridView的布局,

[java] view plaincopy

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent">
  4. <TextView
  5. android:id="@+id/left"
  6. android:layout_width="20dp"
  7. android:layout_height="fill_parent"
  8. android:layout_alignParentLeft="true"
  9. android:layout_alignParentTop="true"/>
  10. <GridView
  11. android:id="@+id/gridView1"
  12. android:layout_width="260dp"
  13. android:layout_height="fill_parent"
  14. android:layout_alignParentTop="true"
  15. android:layout_toRightOf="@+id/left"
  16. android:numColumns="2">
  17. </GridView>
  18. <TextView
  19. android:id="@+id/right"
  20. android:layout_width="50dp"
  21. android:layout_height="fill_parent"
  22. android:layout_alignParentRight="true"
  23. android:layout_alignParentTop="true"/>
  24. </RelativeLayout>

最后就是每一个GridView的item的布局了,就是一个ImageView加上TextView。

[java] view plaincopy

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:background="@drawable/disk_bg_selector">
  5. <ImageView
  6. android:id="@+id/imageView1"
  7. android:layout_width="60dp"
  8. android:layout_height="70dp"
  9. android:layout_alignParentTop="true"
  10. android:layout_centerHorizontal="true"
  11. android:layout_marginTop="5dp"/>
  12. <TextView
  13. android:id="@+id/msg"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_below="@+id/imageView1"
  17. android:layout_centerHorizontal="true"
  18. android:paddingBottom="10dp"
  19. android:textColor="#ffffff"/>
  20. </RelativeLayout>

最后看一下效果图,

补充:还有三个我觉得应该实现的地方还没有实现,一个是长按拖动item,一个是滑动页面的时候变换的显示页面的小圈,再就是点击那个箭头屏幕显示设置页面。有时间再去实现,感兴趣的朋友也可以自己尝试一下。

下载地址

Android高仿360安全卫士--布局篇(2)相关推荐

  1. Android高仿360安全卫士--布局篇

    转自:http://blog.csdn.net/wangjinyu501/article/details/8083373 最近模仿360手机卫士,做了一个Demo.看了一下360的布局文件,发现它是自 ...

  2. C#制作高仿360安全卫士窗体(三)

    距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作文本框写一下.同时也希望有爱好这些玩意的同 ...

  3. C#制作高仿360安全卫士窗体二

    继上次C#制作高仿360安全卫士窗体<一>发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家,写的非常乱而且很少文字介绍.在 ...

  4. C#制作高仿360安全卫士窗体一

    开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...

  5. C#制作高仿360安全卫士窗体(四)- 水晶按钮

    项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...

  6. android手机安全卫士源码高仿360安全卫士

    下载地址:http://download.csdn.net/detail/lengyanyue2014/7993363 运行截图: 源码目录 │  .classpath │  .project │   ...

  7. (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇

    从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据 ...

  8. android仿微信充值布局,Android 高仿微信支付数字键盘功能

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...

  9. 高仿360手机卫士——Android源码

    高仿360手机卫士 高仿360手机卫士界面android源码,左右滑动效果,超炫. 下载地址:http://www.devstore.cn/code/info/1173.html 运行截图:    热 ...

最新文章

  1. Spring Boot 最最最常用的注解梳理
  2. 构建负载均衡服务器之二 LVS详解及应用
  3. 希尔排序c语言,希尔排序(C/C++实现)
  4. php foreach 不等于_PHP中的7个模板引擎
  5. 13.5.虚拟化工具--jhat详解、13.6.虚拟化工具--jstack详解
  6. 看完这篇Redis缓存三大问题,保你能和面试官互扯。
  7. VisualGDB for Linux 安装配置
  8. python pip在哪里_Python 2.7.9(Linux)中的pip在哪里
  9. asp.net web开发步骤_WEB开发流程
  10. CCNA-第六篇-静态路由+动态路由开头
  11. Dictionary 序列化与反序列化
  12. 瑞士加密银行SEBA将发行B轮融资股票作为证券代币
  13. java8-谓词(predicate)
  14. vc 6.0下msdev错误
  15. b站学python哪个好学_B站上那个不用钱的学习python的资源
  16. python while循环详解
  17. 软件开发工具【四】 之 软件开发工具的技术要素
  18. transact-sql的语法规则
  19. vue 移动端实现上拉加载更多
  20. python把文件夹中所有的图片按顺序转换成视频

热门文章

  1. l1正则化matlab工具箱,正则化matlab工具包
  2. el-tree 设置选中添加样式
  3. Linux配置网络地址的四种方法
  4. HDU 4115 2-SAT
  5. PT4115使用STM32单片机引脚PWM调光
  6. 关于几个单位K,M,G,T,P,E,Z
  7. python某漫画app逆向
  8. github加速配置
  9. 【智能优化算法】基于融合莱维飞行与黄金正弦的蚁狮算法求解单目标优化问题matlab代码
  10. 如何选用模块化UPS