首页 > 技术文章 > Android项目实战_手机安全卫士home界面

boket 2017-06-12 10:06 原文

# 安全卫士主页面#

###1.GridView控件

1.与ListView的使用方式差不多,也要使用数据适配器,通过设置android:numColumns控制显示几列
2.通过指定android:numColumns来控制显示多少列

###2.GridView分割线的实现方式
1.给item设置背景图片
2.给GridView和item设置不同的背景色,然后设置水平间方向间隔属性值android:horizontalSpacing和竖直方向间隔属性值android:verticalSpacing
![](http://i.imgur.com/saMRopa.png)

###3.自定义控件——开关控件
1.做自定义控件首先要分析控件都有什么功能
2.开关控件需要有一个开或者关状态,然后根据状态显示不同的图片

###4.状态选择器——selector
1.可以给View设置不同的背景
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按压时的背景图片-->
<item android:state_pressed="true" android:drawable="@drawable/dg_button_cancel_select"/>
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/dg_button_cancel_normal"/>
</selector>
2.可以给文字设置不同的颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:color="@color/software_textColor_selected"></item>
<item android:state_selected="false" android:color="@color/software_textColor_unselected"></item>
</selector>

###5.自定义对话框
1.也是使用 AlertDialog.Builder
AlertDialog.Builder builder = new Builder(this);
2.填充出一个view
View view = View.inflate(this, R.layout.dialog_enter_pwd, null);
3.使用setView方法
builder.setView(view);

###6.给View设置图片一个简便的方法
1.设置drawableLeft、drawableTop、drawableRight、drawableBottom

###7.使用androidSDK中提供的图片
1.引用drawable的时候要在前面加上android:
<ImageView
android:src="@android:drawable/presence_online"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

###8.抽取style
1.在res/values/styles.xml文件里
2.具体实现方式
<style name="text_title">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">48dp</item>
<item name="android:background">#99CCFF</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textSize">18sp</item>
</style>

###9.给TextView设置点击事件
1.将clickable设置为true

对应代码:

  1 package com.hb.mobilesafe.activities;
  2 
  3 import android.animation.ObjectAnimator;
  4 import android.annotation.SuppressLint;
  5 import android.app.Activity;
  6 import android.app.AlertDialog;
  7 import android.app.AlertDialog.Builder;
  8 import android.content.Intent;
  9 import android.content.SharedPreferences;
 10 import android.content.SharedPreferences.Editor;
 11 import android.os.Bundle;
 12 import android.text.TextUtils;
 13 import android.view.View;
 14 import android.view.View.OnClickListener;
 15 import android.view.ViewGroup;
 16 import android.view.Window;
 17 import android.widget.AdapterView;
 18 import android.widget.AdapterView.OnItemClickListener;
 19 import android.widget.BaseAdapter;
 20 import android.widget.Button;
 21 import android.widget.EditText;
 22 import android.widget.GridView;
 23 import android.widget.ImageView;
 24 import android.widget.TextView;
 25 import android.widget.Toast;
 26 
 27 import com.hb.demo_mobilesafe.R;
 28 
 29 public class HomeActivities extends Activity {
 30     private ImageView iv_logo;
 31     private GridView gridView;
 32     private MyGridAdapter adapter;
 33     private String [] names;
 34     private String [] descs;
 35     private int [] pictrues;
 36     private SharedPreferences sp;
 37     private AlertDialog show;
 38     @Override
 39     protected void onCreate(Bundle savedInstanceState) {
 40         super.onCreate(savedInstanceState);
 41         requestWindowFeature(Window.FEATURE_NO_TITLE);
 42         setContentView(R.layout.activity_home);
 43         initVeiw();
 44         initDate();
 45         gridView.setOnItemClickListener(new OnItemClickListener() {
 46 
 47             @Override
 48             public void onItemClick(AdapterView<?> parent, View view,
 49                     int position, long id) {
 50                 switch (position) {
 51                 //手机防盗
 52                 case 0:
 53                     //判断是进入设置密码界面还是进入输入密码界面
 54                     boolean tag = isSetPassWord();
 55                     if(tag){
 56                         //进入输入密码界面
 57                         mInputPassWord();
 58                     }else{
 59                         //进入设置面界面
 60                         mSetPassWord();
 61                     }
 62                     //Toast.makeText(HomeActivities.this, "手机防盗", 0).show();
 63                     break;
 64                     //拦截骚扰
 65                 case 1:
 66                     startActivity(new Intent(HomeActivities.this,BlackNumberActivity.class ));
 67                     break;
 68                     //软件管家
 69                 case 2:
 70                     startActivity(new Intent(HomeActivities.this,SoftwareManagerActivity.class ));
 71                     break;
 72                     //进程管理
 73                 case 3:
 74                     startActivity(new Intent(HomeActivities.this,ProcessManagerActivity.class ));
 75                     break;
 76                     //流量统计
 77                 case 4:
 78                     startActivity(new Intent(HomeActivities.this,FlowStatisticAcitivty.class ));
 79                     break;
 80                     //手机杀毒
 81                 case 5:
 82                     startActivity(new Intent(HomeActivities.this,AntiVirusActivity.class ));
 83                     break;
 84                 case 6:
 85                     //系统加速
 86                     startActivity(new Intent(HomeActivities.this,SysChacheActivity.class ));
 87                     break;
 88                     //常用工具
 89                 case 7:
 90                     startActivity(new Intent(HomeActivities.this,CommontoolsActivity.class ));
 91                     break;
 92 
 93                 }
 94             }
 95 
 96 
 97         });
 98     }
 99     private void initVeiw() {
100         iv_logo=(ImageView) findViewById(R.id.iv_logo);
101         gridView=(GridView) findViewById(R.id.gridView);
102         names = new String []{"手机防盗","拦截骚扰","软件管家","进程管理",
103                 "流量统计","手机杀毒","系统加速","常用工具"};
104         descs = new String []{"远程定位手机","全面骚扰拦截","管理您的软件",
105                 "管理正在运行","流量一目了然","病毒无法藏身","系统快如火箭","常用工具大全"};
106         pictrues = new int []{R.drawable.sjfd,R.drawable.srlj,R.drawable.rjgj,
107                 R.drawable.jcgl,R.drawable.lltj,R.drawable.sjsd,R.drawable.xtjs,
108                 R.drawable.cygj};
109     }
110     private void initDate() {
111         sp = getSharedPreferences("config", MODE_PRIVATE);
112         adapter = new MyGridAdapter();
113         ObjectAnimator oa = ObjectAnimator.ofFloat(iv_logo, "rotationY", 45,90,135,180,225,270,315);
114         oa.setDuration(3000);
115         //使其重复执行动画
116         oa.setRepeatCount(ObjectAnimator.INFINITE);
117         oa.setRepeatMode(ObjectAnimator.RESTART);
118         oa.start();
119         gridView.setAdapter(adapter);
120     }
121     //设置密码
122     private void mSetPassWord() {
123         AlertDialog.Builder builder=new Builder(HomeActivities.this);
124         View view = View.inflate(HomeActivities.this, R.layout.setpassword_item, null);
125         builder.setCancelable(false);
126         builder.setView(view);
127         show = builder.show();
128         Button cancel=(Button) view.findViewById(R.id.bt_cancel);
129         Button confirm=(Button) view.findViewById(R.id.bt_confirm);
130         final EditText pw=(EditText) view.findViewById(R.id.et_pw);
131         final EditText repw=(EditText) view.findViewById(R.id.et_repw);
132         //确认
133         confirm.setOnClickListener(new OnClickListener() {
134 
135             @Override
136             public void onClick(View v) {
137                 String password =pw.getText().toString().trim();
138                 String repassword = repw.getText().toString().trim();
139                 if(TextUtils.isEmpty(password) ||TextUtils.isEmpty(repassword)){
140                     Toast.makeText(HomeActivities.this, "密码不能为空!", 0).show();
141                     return;
142                 }
143                 if(!password.equals(repassword)){
144                     Toast.makeText(HomeActivities.this, "亲密码错误了!", 0).show();
145                     return;
146                 }
147                 Editor edit = sp.edit();
148                 edit.putString("password", password);
149                 edit.commit();
150                 //消失对话框
151                 show.dismiss();
152                 //进入输入密码
153                 mInputPassWord();
154             }
155         });
156         //取消
157         cancel.setOnClickListener(new OnClickListener() {
158 
159             @Override
160             public void onClick(View v) {
161                 show.dismiss();
162             }
163         });
164 
165 
166 
167     }
168     //输入密码
169     private void mInputPassWord() {
170 
171         AlertDialog.Builder builder=new Builder(HomeActivities.this);
172         View view = View.inflate(HomeActivities.this, R.layout.inputpassword_item, null);
173         builder.setCancelable(false);
174         builder.setView(view);
175         show = builder.show();
176         Button cancel=(Button) view.findViewById(R.id.bt_cancel);
177         Button confirm=(Button) view.findViewById(R.id.bt_confirm);
178         final EditText pw=(EditText) view.findViewById(R.id.et_pw);
179         //确认
180         confirm.setOnClickListener(new OnClickListener() {
181 
182             @Override
183             public void onClick(View v) {
184                 String spPassword = sp.getString("password", null);
185                 String password = pw.getText().toString().trim();
186                 if(TextUtils.isEmpty(password) ){
187                     Toast.makeText(HomeActivities.this, "密码不能为空!", 0).show();
188                     return;
189                 }
190                 if(!password.equals(spPassword)){
191                     Toast.makeText(HomeActivities.this, "亲密码错误了!", 0).show();
192                     return;
193                 }
194                 boolean con = sp.getBoolean("configed", false);
195                 if(con){
196                     //进入防盗页面
197                     lockPage();
198                 }else{
199                     //进入向导页面
200                     GuidePage();
201                 }
202                 //消失对话框
203                 show.dismiss();
204 
205             }
206 
207 
208 
209 
210         });
211         //取消
212         cancel.setOnClickListener(new OnClickListener() {
213 
214             @Override
215             public void onClick(View v) {
216                 show.dismiss();
217             }
218         });
219 
220 
221     }
222     //进入手机向导页面
223     private void GuidePage() {
224         Intent intent=new Intent(HomeActivities.this, StepOnePage_Activity.class);
225         startActivity(intent);
226 
227 
228     }
229     //如果sp里面的“configed”值存在,就进入手机防盗页面
230     private void lockPage() {
231         startActivity(new Intent(HomeActivities.this, LockActivity.class));
232 
233     }
234 
235     class MyGridAdapter extends BaseAdapter{
236 
237         @Override
238         public int getCount() {
239             return names.length;
240         }
241         @SuppressLint("ViewHolder") @Override
242         public View getView(int position, View convertView, ViewGroup parent) {
243             View view=View.inflate(HomeActivities.this, R.layout.home_item, null);
244             ImageView iv_icon=(ImageView) view.findViewById(R.id.iv_icon);
245             TextView tv_names=(TextView) view.findViewById(R.id.tv_name);
246             TextView tv_desc=(TextView) view.findViewById(R.id.tv_desc);
247             iv_icon.setImageResource(pictrues[position]);
248             tv_names.setText(names[position]);
249             tv_desc.setText(descs[position]);
250             return view;
251         }
252         @Override
253         public Object getItem(int position) {
254             // TODO Auto-generated method stub
255             return null;
256         }
257 
258         @Override
259         public long getItemId(int position) {
260             // TODO Auto-generated method stub
261             return 0;
262         }
263 
264 
265 
266     }
267     //设置
268     public void setting(View view){
269         Intent intent=new Intent(HomeActivities.this, SetActivities.class);
270         startActivity(intent);
271     }
272     public boolean isSetPassWord(){
273         String password = sp.getString("password", null);
274         if(TextUtils.isEmpty(password)){
275             return false;
276         }
277         return true;
278     }
279 }

xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <RelativeLayout
 8         android:layout_width="match_parent"
 9         android:layout_height="0dp"
10         android:layout_weight="1"
11         android:background="@drawable/blue_bkg" >
12 
13         <ImageView
14             android:id="@+id/iv_logo"
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:layout_alignParentLeft="true"
18             android:layout_centerVertical="true"
19             android:layout_margin="12dip"
20             android:src="@drawable/logo" />
21 
22         <TextView
23             android:id="@+id/tv_title"
24             android:layout_width="wrap_content"
25             android:layout_height="wrap_content"
26             android:layout_alignParentRight="true"
27             android:layout_marginRight="30dip"
28             android:layout_marginTop="20dip"
29             android:text="弘博手机安全卫士"
30             android:textColor="#bb00ff"
31             android:textSize="25sp" />
32 
33         <com.hb.mobilesafe.ui.TextDesc
34             android:id="@+id/tv_desc"
35             android:layout_width="wrap_content"
36             android:layout_height="wrap_content"
37             android:layout_centerVertical="true"
38             android:layout_marginLeft="50dp"
39             android:layout_toRightOf="@id/iv_logo"
40             android:ellipsize="marquee"
41             android:focusable="true"
42             android:lines="1"
43             android:singleLine="true"
44             android:text="弘博手机安全卫士,时刻保护着你的手机一移动安全,版权所有盗版必究,http://interhb.cn"
45             android:textColor="#bbff00" />
46 
47         <ImageView
48             android:id="@+id/setting"
49             android:layout_width="wrap_content"
50             android:layout_height="wrap_content"
51             android:layout_alignParentRight="true"
52             android:layout_alignParentTop="true"
53             android:layout_margin="10dp"
54             android:background="@drawable/setting"
55             android:onClick="setting" />
56     </RelativeLayout>
57 
58     <GridView
59         android:id="@+id/gridView"
60         android:layout_width="wrap_content"
61         android:layout_height="0dp"
62         android:layout_weight="2"
63         android:numColumns="2" />
64 
65 </LinearLayout>

 

推荐阅读