Android高仿360安全卫士--布局篇(2)
来源:互联网 发布:seo好做吗 编辑:程序博客网 时间:2024/05/22 11:32
一、概述
之前写过一篇文章也是关于360安全卫士布局的,发现有很多朋友比较感兴趣,鉴于此这次继续再完善一下。先说一下思路:
1、继续使用ViewPager来滑动切换页面
2、使用GridView来显示各个图片和文字
二、代码
1、ViewPager的实现:
- import java.util.ArrayList;
- import com.example.demo_360.MainActivity.ImageInfo;
- import com.example.demo_360.R;
- import android.content.Context;
- import android.os.Vibrator;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemLongClickListener;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.TextView;
- public class MyPagerAdapter extends PagerAdapter {
- private Vibrator vibrator;
- private ArrayList<ImageInfo> data;
- private Context context;
- public MyPagerAdapter(Context context, ArrayList<ImageInfo> data) {
- this.context = context;
- this.data = data;
- vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
- }
- @Override
- public int getCount() {
- return 2;
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
- @Override
- public Object instantiateItem(ViewGroup container, final int index) {
- 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(new BaseAdapter() {
- @Override
- public int getCount() {
- return 8;
- }
- @Override
- public Object getItem(int position) {
- return position;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, 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);
- return item;
- }
- });
- gridView.setOnItemLongClickListener(new OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
- int arg2, long arg3) {
- View view = arg1;
- view.setVisibility(View.INVISIBLE);
- vibrator.vibrate(2500);
- return true;
- }
- });
- ((ViewPager) container).addView(view);
- return view;
- }
- }
2、Activity的实现,
- import java.util.ArrayList;
- import com.example.adapter.MyPagerAdapter;
- import android.os.Bundle;
- import android.app.Activity;
- import android.support.v4.view.ViewPager;
- import android.view.Menu;
- /**
- * @author wang
- */
- public class MainActivity extends Activity {
- private ArrayList<ImageInfo> data;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initData();
- ViewPager vpager = (ViewPager) findViewById(R.id.vPager);
- vpager.setAdapter(new MyPagerAdapter(MainActivity.this, data));
- vpager.setPageMargin(50);//设置页面之间的差距
- }
- private void initData() {
- data = new ArrayList<ImageInfo>();
- data.add(new ImageInfo("抢火车票", R.drawable.tool_box_ticket));
- data.add(new ImageInfo("系统体检", R.drawable.tool_box_system_exam));
- data.add(new ImageInfo("快速拨号", R.drawable.tool_box_quickdial));
- data.add(new ImageInfo("网络设置", R.drawable.tool_box_network));
- data.add(new ImageInfo("流量监控", R.drawable.tool_box_feescan));
- data.add(new ImageInfo("宝盒", R.drawable.tool_box_baohe));
- data.add(new ImageInfo("短信监控", R.drawable.smsunread));
- data.add(new ImageInfo("设置监控",
- R.drawable.tabicon_black_white_list_normal));
- data.add(new ImageInfo("通话监控", R.drawable.tabicon_call_record_normal));
- data.add(new ImageInfo("信息设置", R.drawable.tabicon_sms_record_normal));
- data.add(new ImageInfo("恶意广告拦截", R.drawable.title_bar_set_logout));
- data.add(new ImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
- data.add(new ImageInfo("内存监控", R.drawable.traffic_main_unchecked));
- data.add(new ImageInfo("防火墙", R.drawable.traffic_main_unchecked));
- data.add(new ImageInfo("交通趋势", R.drawable.traffic_list_unchecked));
- data.add(new ImageInfo("内存监控", R.drawable.traffic_main_unchecked));
- data.add(new ImageInfo("防火墙", R.drawable.traffic_main_unchecked));
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- public class ImageInfo {
- public String imageTitle;
- public int imageId;
- public ImageInfo(String title, int id) {
- 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>
- <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>
- <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安全卫士--布局篇(2)
- Android高仿360安全卫士--布局篇(2)
- Android高仿360安全卫士--布局篇
- Android高仿360安全卫士--布局篇
- Android高仿360安全卫士--布局篇
- Android高仿360安全卫士--布局篇(一)
- android手机安全卫士源码高仿360安全卫士
- [qt] 高仿360安全卫士
- C#制作高仿360安全卫士窗体<二>
- C#制作高仿360安全卫士窗体<二>
- C#制作高仿360安全卫士窗体<二>
- 【原创】高仿360安全卫士 9.2 界面 (纯qml实现)
- [android view]仿安全卫士的加速小球
- 高仿360手机卫士布局,用来学习布局
- Android编程实战--安全卫士(2)
- 高仿苹果通讯录布局
- Android仿360卫士布局风格
- Android之理解Looper、Handler、Message、MessageQueue
- iOS开发资源:VideoPlayerKit、AHAlertView以及REMenu等
- 认知科学与心理科学优质资源索引 ← 转自阳志平的个人网站
- Android官方的SlidingMenu--Navigation Drawer
- Android View绘制流程
- Android高仿360安全卫士--布局篇(2)
- 游戏引擎全剖析(一)
- C++ 消息中间件(MQ4CPP)
- DBUtiles中的简单使用(QueryRunner和ResultSetHandler的手动实现)
- 旧书店网站赏析 (上)
- 游戏引擎全剖析(二)
- IO操作规律
- Android定制组件之TitleBar之涂鸦
- Onlyit C++开发平台介绍