Android高仿360安全卫士--布局篇(2)
一、概述
之前写过一篇文章也是关于360安全卫士布局的,发现有很多朋友比较感兴趣,鉴于此这次继续再完善一下。先说一下思路:
1、继续使用ViewPager来滑动切换页面
2、使用GridView来显示各个图片和文字
二、代码
1、ViewPager的实现:
- importjava.util.ArrayList;
- importcom.example.demo_360.MainActivity.ImageInfo;
- importcom.example.demo_360.R;
- importandroid.content.Context;
- importandroid.os.Vibrator;
- importandroid.support.v4.view.PagerAdapter;
- importandroid.support.v4.view.ViewPager;
- importandroid.util.Log;
- importandroid.view.LayoutInflater;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.widget.AdapterView;
- importandroid.widget.AdapterView.OnItemLongClickListener;
- importandroid.widget.BaseAdapter;
- importandroid.widget.GridView;
- importandroid.widget.ImageView;
- importandroid.widget.TextView;
- publicclassMyPagerAdapterextendsPagerAdapter {
- privateVibrator vibrator;
- privateArrayList<ImageInfo> data;
- privateContext context;
- publicMyPagerAdapter(Context context, ArrayList<ImageInfo> data) {
- this.context = context;
- this.data = data;
- vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
- }
- @Override
- publicintgetCount() {
- return2;
- }
- @Override
- publicbooleanisViewFromObject(View arg0, Object arg1) {
- returnarg0 == arg1;
- }
- @Override
- publicObject instantiateItem(ViewGroup container,finalintindex) {
- Log.v("test", index +"index");
- View view = LayoutInflater.from(context).inflate(R.layout.grid, null);
- GridView gridView = (GridView) view.findViewById(R.id.gridView1);
- gridView.setNumColumns(2);
- gridView.setVerticalSpacing(5);
- gridView.setHorizontalSpacing(5);
- gridView.setAdapter(newBaseAdapter() {
- @Override
- publicintgetCount() {
- return8;
- }
- @Override
- publicObject getItem(intposition) {
- returnposition;
- }
- @Override
- publiclonggetItemId(intposition) {
- returnposition;
- }
- @Override
- publicView getView(intposition, View convertView, ViewGroup parent) {
- View item = LayoutInflater.from(context).inflate(
- R.layout.grid_item, null);
- ImageView iv = (ImageView) item.findViewById(R.id.imageView1);
- iv.setImageResource((data.get(index * 8+ position)).imageId);
- TextView tv = (TextView) item.findViewById(R.id.msg);
- tv.setText((data.get(index * 8+ position)).imageMsg);
- returnitem;
- }
- });
- gridView.setOnItemLongClickListener(newOnItemLongClickListener() {
- @Override
- publicbooleanonItemLongClick(AdapterView<?> arg0, View arg1,
- intarg2,longarg3) {
- View view = arg1;
- view.setVisibility(View.INVISIBLE);
- vibrator.vibrate(2500);
- returntrue;
- }
- });
- ((ViewPager) container).addView(view);
- returnview;
- }
- }
对于ViewPager的用法,不明白的朋友可以看一下我之前的文章,里面有介绍。
2、Activity的实现,
- importjava.util.ArrayList;
- importcom.example.adapter.MyPagerAdapter;
- importandroid.os.Bundle;
- importandroid.app.Activity;
- importandroid.support.v4.view.ViewPager;
- importandroid.view.Menu;
- /**
- * @author wang
- */
- publicclassMainActivityextendsActivity {
- privateArrayList<ImageInfo> data;
- @Override
- publicvoidonCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initData();
- ViewPager vpager = (ViewPager) findViewById(R.id.vPager);
- vpager.setAdapter(newMyPagerAdapter(MainActivity.this, data));
- vpager.setPageMargin(50);//设置页面之间的差距
- }
- privatevoidinitData() {
- data = newArrayList<ImageInfo>();
- data.add(newImageInfo("抢火车票", R.drawable.tool_box_ticket));
- data.add(newImageInfo("系统体检", R.drawable.tool_box_system_exam));
- data.add(newImageInfo("快速拨号", R.drawable.tool_box_quickdial));
- data.add(newImageInfo("网络设置", R.drawable.tool_box_network));
- data.add(newImageInfo("流量监控", R.drawable.tool_box_feescan));
- data.add(newImageInfo("宝盒", R.drawable.tool_box_baohe));
- data.add(newImageInfo("短信监控", R.drawable.smsunread));
- data.add(newImageInfo("设置监控",
- R.drawable.tabicon_black_white_list_normal));
- data.add(newImageInfo("通话监控", R.drawable.tabicon_call_record_normal));
- data.add(newImageInfo("信息设置", R.drawable.tabicon_sms_record_normal));
- data.add(newImageInfo("恶意广告拦截", R.drawable.title_bar_set_logout));
- data.add(newImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
- data.add(newImageInfo("内存监控", R.drawable.traffic_main_unchecked));
- data.add(newImageInfo("防火墙", R.drawable.traffic_main_unchecked));
- data.add(newImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
- data.add(newImageInfo("内存监控", R.drawable.traffic_main_unchecked));
- data.add(newImageInfo("防火墙", R.drawable.traffic_main_unchecked));
- }
- @Override
- publicbooleanonCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- returntrue;
- }
- publicclassImageInfo {
- publicString imageTitle;
- publicintimageId;
- publicImageInfo(String title,intid) {
- imageId = id;// 图片资源
- imageTitle = title;//图片标题
- }
- }
- }
3、xml布局:
布局主要涉及到三个,一是Activity的布局,需要用到ViewPager控件了。
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/main_screen_bg">
- <ImageView
- android:id="@+id/logo"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingLeft="10dp"
- android:paddingTop="10dp"
- android:src="@drawable/main_notify_logo"/>
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignBottom="@+id/logo"
- android:layout_toRightOf="@+id/logo"
- android:src="@drawable/main_screen_logo"/>
- <FrameLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_below="@+id/logo"
- android:focusable="false"
- android:focusableInTouchMode="false">
- <android.support.v4.view.ViewPager
- android:id="@+id/vPager"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:focusable="false"
- android:focusableInTouchMode="false">
- <ImageView
- android:id="@+id/set"
- style="@style/main_button"
- android:layout_alignParentRight="true"
- android:layout_alignTop="@+id/vPager"
- android:layout_marginRight="5dp"
- android:layout_marginTop="20dp"
- android:background="@drawable/mainscreen_bg_selector"
- android:clickable="true"
- android:src="@drawable/main_menu_normal"/>
- <ImageView
- android:id="@+id/two"
- style="@style/main_button"
- android:layout_alignLeft="@+id/set"
- android:layout_below="@+id/set"
- android:layout_marginTop="20dp"
- android:background="@drawable/mainscreen_bg_selector"
- android:clickable="true"
- android:src="@drawable/main_bg_normal"/>
- <ImageView
- style="@style/main_button"
- android:layout_alignLeft="@+id/set"
- android:layout_below="@+id/two"
- android:layout_marginTop="20dp"
- android:background="@drawable/mainscreen_bg_selector"
- android:clickable="true"
- android:src="@drawable/appmgr_upgrade_edition_brief"/>
- </RelativeLayout>
- </FrameLayout>
- </RelativeLayout>
二是GridView的布局,
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:id="@+id/left"
- android:layout_width="20dp"
- android:layout_height="fill_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"/>
- <GridView
- android:id="@+id/gridView1"
- android:layout_width="260dp"
- android:layout_height="fill_parent"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@+id/left"
- android:numColumns="2">
- </GridView>
- <TextView
- android:id="@+id/right"
- android:layout_width="50dp"
- android:layout_height="fill_parent"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"/>
- </RelativeLayout>
最后就是每一个GridView的item的布局了,就是一个ImageView加上TextView。
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/disk_bg_selector">
- <ImageView
- android:id="@+id/imageView1"
- android:layout_width="60dp"
- android:layout_height="70dp"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="5dp"/>
- <TextView
- android:id="@+id/msg"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/imageView1"
- android:layout_centerHorizontal="true"
- android:paddingBottom="10dp"
- android:textColor="#ffffff"/>
- </RelativeLayout>
最后看一下效果图,
补充:还有三个我觉得应该实现的地方还没有实现,一个是长按拖动item,一个是滑动页面的时候变换的显示页面的小圈,再就是点击那个箭头屏幕显示设置页面。有时间再去实现,感兴趣的朋友也可以自己尝试一下。
Android高仿360安全卫士--布局篇(2)相关推荐
- Android高仿360安全卫士--布局篇
转自:http://blog.csdn.net/wangjinyu501/article/details/8083373 最近模仿360手机卫士,做了一个Demo.看了一下360的布局文件,发现它是自 ...
- C#制作高仿360安全卫士窗体(三)
距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作文本框写一下.同时也希望有爱好这些玩意的同 ...
- C#制作高仿360安全卫士窗体二
继上次C#制作高仿360安全卫士窗体<一>发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家,写的非常乱而且很少文字介绍.在 ...
- C#制作高仿360安全卫士窗体一
开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...
- C#制作高仿360安全卫士窗体(四)- 水晶按钮
项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...
- android手机安全卫士源码高仿360安全卫士
下载地址:http://download.csdn.net/detail/lengyanyue2014/7993363 运行截图: 源码目录 │ .classpath │ .project │ ...
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据 ...
- android仿微信充值布局,Android 高仿微信支付数字键盘功能
现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...
- 高仿360手机卫士——Android源码
高仿360手机卫士 高仿360手机卫士界面android源码,左右滑动效果,超炫. 下载地址:http://www.devstore.cn/code/info/1173.html 运行截图: 热 ...
最新文章
- Spring Boot 最最最常用的注解梳理
- 构建负载均衡服务器之二 LVS详解及应用
- 希尔排序c语言,希尔排序(C/C++实现)
- php foreach 不等于_PHP中的7个模板引擎
- 13.5.虚拟化工具--jhat详解、13.6.虚拟化工具--jstack详解
- 看完这篇Redis缓存三大问题,保你能和面试官互扯。
- VisualGDB for Linux 安装配置
- python pip在哪里_Python 2.7.9(Linux)中的pip在哪里
- asp.net web开发步骤_WEB开发流程
- CCNA-第六篇-静态路由+动态路由开头
- Dictionary 序列化与反序列化
- 瑞士加密银行SEBA将发行B轮融资股票作为证券代币
- java8-谓词(predicate)
- vc 6.0下msdev错误
- b站学python哪个好学_B站上那个不用钱的学习python的资源
- python while循环详解
- 软件开发工具【四】 之 软件开发工具的技术要素
- transact-sql的语法规则
- vue 移动端实现上拉加载更多
- python把文件夹中所有的图片按顺序转换成视频