# 安全卫士主页面#

###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

对应代码:

 package com.hb.mobilesafe.activities;

 import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast; import com.hb.demo_mobilesafe.R; public class HomeActivities extends Activity {
private ImageView iv_logo;
private GridView gridView;
private MyGridAdapter adapter;
private String [] names;
private String [] descs;
private int [] pictrues;
private SharedPreferences sp;
private AlertDialog show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_home);
initVeiw();
initDate();
gridView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch (position) {
//手机防盗
case 0:
//判断是进入设置密码界面还是进入输入密码界面
boolean tag = isSetPassWord();
if(tag){
//进入输入密码界面
mInputPassWord();
}else{
//进入设置面界面
mSetPassWord();
}
//Toast.makeText(HomeActivities.this, "手机防盗", 0).show();
break;
//拦截骚扰
case 1:
startActivity(new Intent(HomeActivities.this,BlackNumberActivity.class ));
break;
//软件管家
case 2:
startActivity(new Intent(HomeActivities.this,SoftwareManagerActivity.class ));
break;
//进程管理
case 3:
startActivity(new Intent(HomeActivities.this,ProcessManagerActivity.class ));
break;
//流量统计
case 4:
startActivity(new Intent(HomeActivities.this,FlowStatisticAcitivty.class ));
break;
//手机杀毒
case 5:
startActivity(new Intent(HomeActivities.this,AntiVirusActivity.class ));
break;
case 6:
//系统加速
startActivity(new Intent(HomeActivities.this,SysChacheActivity.class ));
break;
//常用工具
case 7:
startActivity(new Intent(HomeActivities.this,CommontoolsActivity.class ));
break; }
} });
}
private void initVeiw() {
iv_logo=(ImageView) findViewById(R.id.iv_logo);
gridView=(GridView) findViewById(R.id.gridView);
names = new String []{"手机防盗","拦截骚扰","软件管家","进程管理",
"流量统计","手机杀毒","系统加速","常用工具"};
descs = new String []{"远程定位手机","全面骚扰拦截","管理您的软件",
"管理正在运行","流量一目了然","病毒无法藏身","系统快如火箭","常用工具大全"};
pictrues = new int []{R.drawable.sjfd,R.drawable.srlj,R.drawable.rjgj,
R.drawable.jcgl,R.drawable.lltj,R.drawable.sjsd,R.drawable.xtjs,
R.drawable.cygj};
}
private void initDate() {
sp = getSharedPreferences("config", MODE_PRIVATE);
adapter = new MyGridAdapter();
ObjectAnimator oa = ObjectAnimator.ofFloat(iv_logo, "rotationY", 45,90,135,180,225,270,315);
oa.setDuration(3000);
//使其重复执行动画
oa.setRepeatCount(ObjectAnimator.INFINITE);
oa.setRepeatMode(ObjectAnimator.RESTART);
oa.start();
gridView.setAdapter(adapter);
}
//设置密码
private void mSetPassWord() {
AlertDialog.Builder builder=new Builder(HomeActivities.this);
View view = View.inflate(HomeActivities.this, R.layout.setpassword_item, null);
builder.setCancelable(false);
builder.setView(view);
show = builder.show();
Button cancel=(Button) view.findViewById(R.id.bt_cancel);
Button confirm=(Button) view.findViewById(R.id.bt_confirm);
final EditText pw=(EditText) view.findViewById(R.id.et_pw);
final EditText repw=(EditText) view.findViewById(R.id.et_repw);
//确认
confirm.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
String password =pw.getText().toString().trim();
String repassword = repw.getText().toString().trim();
if(TextUtils.isEmpty(password) ||TextUtils.isEmpty(repassword)){
Toast.makeText(HomeActivities.this, "密码不能为空!", 0).show();
return;
}
if(!password.equals(repassword)){
Toast.makeText(HomeActivities.this, "亲密码错误了!", 0).show();
return;
}
Editor edit = sp.edit();
edit.putString("password", password);
edit.commit();
//消失对话框
show.dismiss();
//进入输入密码
mInputPassWord();
}
});
//取消
cancel.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
show.dismiss();
}
}); }
//输入密码
private void mInputPassWord() { AlertDialog.Builder builder=new Builder(HomeActivities.this);
View view = View.inflate(HomeActivities.this, R.layout.inputpassword_item, null);
builder.setCancelable(false);
builder.setView(view);
show = builder.show();
Button cancel=(Button) view.findViewById(R.id.bt_cancel);
Button confirm=(Button) view.findViewById(R.id.bt_confirm);
final EditText pw=(EditText) view.findViewById(R.id.et_pw);
//确认
confirm.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
String spPassword = sp.getString("password", null);
String password = pw.getText().toString().trim();
if(TextUtils.isEmpty(password) ){
Toast.makeText(HomeActivities.this, "密码不能为空!", 0).show();
return;
}
if(!password.equals(spPassword)){
Toast.makeText(HomeActivities.this, "亲密码错误了!", 0).show();
return;
}
boolean con = sp.getBoolean("configed", false);
if(con){
//进入防盗页面
lockPage();
}else{
//进入向导页面
GuidePage();
}
//消失对话框
show.dismiss(); } });
//取消
cancel.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
show.dismiss();
}
}); }
//进入手机向导页面
private void GuidePage() {
Intent intent=new Intent(HomeActivities.this, StepOnePage_Activity.class);
startActivity(intent); }
//如果sp里面的“configed”值存在,就进入手机防盗页面
private void lockPage() {
startActivity(new Intent(HomeActivities.this, LockActivity.class)); } class MyGridAdapter extends BaseAdapter{ @Override
public int getCount() {
return names.length;
}
@SuppressLint("ViewHolder") @Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(HomeActivities.this, R.layout.home_item, null);
ImageView iv_icon=(ImageView) view.findViewById(R.id.iv_icon);
TextView tv_names=(TextView) view.findViewById(R.id.tv_name);
TextView tv_desc=(TextView) view.findViewById(R.id.tv_desc);
iv_icon.setImageResource(pictrues[position]);
tv_names.setText(names[position]);
tv_desc.setText(descs[position]);
return view;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} }
//设置
public void setting(View view){
Intent intent=new Intent(HomeActivities.this, SetActivities.class);
startActivity(intent);
}
public boolean isSetPassWord(){
String password = sp.getString("password", null);
if(TextUtils.isEmpty(password)){
return false;
}
return true;
}
}

xml:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/blue_bkg" > <ImageView
android:id="@+id/iv_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="12dip"
android:src="@drawable/logo" /> <TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="30dip"
android:layout_marginTop="20dip"
android:text="弘博手机安全卫士"
android:textColor="#bb00ff"
android:textSize="25sp" /> <com.hb.mobilesafe.ui.TextDesc
android:id="@+id/tv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="50dp"
android:layout_toRightOf="@id/iv_logo"
android:ellipsize="marquee"
android:focusable="true"
android:lines="1"
android:singleLine="true"
android:text="弘博手机安全卫士,时刻保护着你的手机一移动安全,版权所有盗版必究,http://interhb.cn"
android:textColor="#bbff00" /> <ImageView
android:id="@+id/setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
android:background="@drawable/setting"
android:onClick="setting" />
</RelativeLayout> <GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:numColumns="2" /> </LinearLayout>

Android项目实战_手机安全卫士home界面的更多相关文章

  1. Android项目实战_手机安全卫士splash界面

    - 根据代码的类型组织包结构 1. 界面 com.hb.mobilesafe.activities 2. 服务 com.hb.mobilesafe.services 3. 业务逻辑 com.hb.mo ...

  2. Android项目实战_手机安全卫士手机防盗界面

    #安全卫士手机防盗# ###1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我们放入木块和取出木块的时候只能从最上面开始操作 ###2.Android中的坐标系![](http:/ ...

  3. Android项目实战_手机安全卫士程序锁

    ###1.两个页面切换的实现1. 可以使用Fragment,调用FragmentTransaction的hide和show方法2. 可以使用两个布局,设置visibility的VISIABLE和INV ...

  4. Android项目实战_手机安全卫士系统加速

    ## 1.本地数据库自动更新的工作机制1. 开启一个服务,定时访问服务器2. 进行版本对比,如果最新版本比较高,获取需要更新的内容3. 将新内容插入到本地数据库中 ## 2.如何处理横竖屏切换1. 指 ...

  5. Android项目实战_手机安全卫士软件管家

    ###1.应用程序信息的flags 1. int flags = packageInfo.applicationInfo.flags2. 0000 0000 0000 0000 0000 0000 0 ...

  6. Android项目实战_手机安全卫士拦截骚扰

    ###1.骚扰拦截需求分析1.界面1.1 黑名单列表界面1.2 添加黑名单界面2.功能2.1 黑名单的添加.删除2.2 拦截电话2.3 拦截短信 ###2.黑名单数据库的创建1.分析需要的字段id 主 ...

  7. Android项目实战_手机安全卫士流量统计

    ## 1.抽屉控件SlidingDrawer:一定要配置android:handle(把手)和android:content(内容),并在子View中添加把手和内容的布局```java <Sli ...

  8. Android项目实战_手机安全卫士进程管理

    ###1.设备进程信息获取获取设备运行进程 ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVI ...

  9. Android项目实战--手机卫士开发系列教程

    <ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件  保存到相册 2 分钟前 上传   Android项目实战--手机卫士01- ...

随机推荐

  1. vb 运行ppt示例代码

    来源:http://support.microsoft.com/kb/222929 通过使用 PowerPoint 中的自动运行功能,您可以以编程方式打印.显示幻灯片及执行以交互式执行的大多数事情.按 ...

  2. mongo实践-透过js shell操作mongo

    mongo实践-通过js shell操作mongo 保存命令: j={name:"wangjingjing",age:15} db.user.save(j); 查询命令: var ...

  3. java多线程编程核心技术(三)--线程间通信

    1.等待/通知机制 1.wait()方法:使当前执行代码的线程进行等待.wait()方法是Object类的方法,该方法将当前线程放入“预执行队列”中,并在wait()所处的代码行处停止执行.只到被唤起 ...

  4. NOIP2014 提高组合集

    NOIP 2014 提高组 合集 D1 T1 生活大爆炸版石头剪刀布 首先,先将两个人的猜拳序列都变得不小于n.然后逐个模拟.胜败什么的看表就行了. #include <iostream> ...

  5. pg_dump: [archiver (db)] connection to database “dbase” failed: FATAL: Peer authentication failed for user “postgres”

    "Peer authentication" means that it's comparing your database username against your Linux ...

  6. Spring注解配置定时任务<task:annotation-driven/>

    http://m.blog.csdn.net/article/details?id=50945311 首先在配置文件头部的必须要有: xmlns:task="http://www.sprin ...

  7. 第5章 Cisco测试命令和TCP/IP连接故障处理

    第5章 Cisco测试命令和TCP/IP连接故障处理 一.故障处理命令 1.show命令: 1) 全局命令: show version :显示系统硬件和软件版本.DRAM.Flash show sta ...

  8. sgu101Domino

    给你一些边,假设存在欧拉路径就打出来 我的代码例如以下: #include<iostream> #include<cstring> using namespace std; i ...

  9. http://www.html5tricks.com/demo/jiaoben2255/index.html 排序算法jquery演示源代码

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  10. Centos 7 Apache编译安装

    1.安装apache ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --e ...