zoukankan      html  css  js  c++  java
  • Android项目实战_手机安全卫士home界面

    # 安全卫士主页面#

    ###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>
  • 相关阅读:
    rsync安装配置实时同步
    ORA-00392: log 4 of thread 2 is being cleared, operation not allowed
    CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
    常见服务端口
    linux客户端传输文件到Windows本地
    windows/Linux主机重启NetBackup服务和后台进程
    linux命令之grep命令
    linux命令之awk命令
    Shiro安全框架
  • 原文地址:https://www.cnblogs.com/boket/p/6991516.html
Copyright © 2011-2022 走看看