手机卫士02_gridView,statelist.ui相关

1.1 新控件 GridView 类似ListView,但是可以指定每一行的列数

GridViewListView都继承ABsListView.

属性:numColums=”2”//每一行的列数

使用方式可以参考ListView,需要setAdapter(adapter).设置适配器

adapter中最重要的方法,getCount()//几个条目和getView()//具体效果

要注意的是getCount()返回的是总的条目数,而不是行数.

GridView相当于是把条目总数除以行数这样的形式把条目显示出来.

考虑到这里要使用的每个子条目中数据不一样,可以把条目对应的图片,文字说明,标题,定义成对应的数组,然后匹配对应的条目数组的下标.再定义一个条目item_home.xml的布局文件用来显示对应的条目即可.

对照效果图中的样式进行条目布局文件的布置即可.然后在activity 中找到并设置参数.

1.2  GridView条目的边框

本质上就是给条目的背景增加一个背景图片,起到表框美化的效果(说好的border)

2,Home界面功能的实现

2.1 Home界面上增加一个设置按钮,可以跳转到设置中心的界面.

创建一个设置中心的界面,第一行,显示标题:设置中心

背景颜色#99CCFF//淡蓝色  textColor:#ffffff//白色

2.2 设置中心功能一 开启自动更新设置

2.2.1 ui设置

①背景资源,first_normal 透明的背景图片,文本:自动更新设置

②相对应的在条目右边定义一个ImageView(显示开关,点击之后切换资源)

③开关ImageView的点击事件,点击切换图标

如果直接定义boolean类型变量的话,也是可以实现,但是如果这类开关太多,代码就显得比较臃肿,要定义很多布尔类型变量,所以在这里定义一个自定义ImageView

④自定义ImageView,创建一个布尔类型的变量,控制显示的图片,提供set(这个方法里同时设置图片),get方法,和一个改变状态的方法changImg()方法,这里set当前布尔变量的取反

2.2.2 观察系统应用开关设置,可以知道不仅点击开关图片有效,整个条目上也是有效的.

①设置该条目的点击事件(即这个开关的父亲)即可

②系统开关点击的时候会改变背景:通过状态选择器设置.

开发文档App Resouce>>Resouce Type>>Drawable>>State List(状态列表)它是一个图形资源,通过XML文件定义,用一组不同的图形表示同一个图形.

定义在Resouce文件夹下定义一个 Drawable文件夹,语法要求比较复杂,看示例代码

在创建Xml文件的时候,指定根节点selector,把实例代码拷贝过来,留下按压状态(pressed)(defult)条目即可,并对其设置不同的状态图片

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_pressed="true"

          android:drawable="@drawable/first_pressed"/> <!-- pressed -->

    <item android:drawable="@drawable/first_normal"/> <!-- default -->

</selector>

使用方式:指定背景文件的时候指定这个XML资源文件即可.

2.3自动更新的逻辑完成

①记录开关的状态,通过SharedPreferences记录最方便,每点击一次就保存一次.

  同时onCreate() ,读取状态并给对应的开关进行设置,默认为true即可.

②当用户设置为flase,关闭自动更新的时候

  在splash中获取SharedPrefereces中开关记录的状态,对其进行判断.

      如果是true就监测自动更新,如果为false用户没有开启自动更新(记得延迟看广告)

3,手机防盗功能的实现:

  3.1 手机防盗页面需要通过密码进入

①设置条目点击事件GridView.setOnItemClickListener,通过方法上的参数position来判断.

按照页面的条目布局,position0的时候,就是手机防盗

②进入手机防盗之前,判断用户是否设置过密码(也有在设置中心中设置,逻辑差不多)

定义一个方法:isSetUpPassword()//判断用户是否设置过密码.

因为要把密码保存在SharedPrenferences,所以这时候可以通过获取密码,如果获取不到,就代表为flase,没有设置过密码,弹出设置密码的界面,如果为true,就设置过,弹出输入密码的界面.

③如果是弹出新界面,对手机资源消耗比较大,所以选择弹出一个对话框

传统的对话框上是没有文本输入的,所以要自定义两个(设置和输入密码)对话框

builder.setView()//设置一个View作为对话框中的内容

创建两个 XML布局作为设置对话框,输入对话框的View.inflate(上下文,id,null即可)

//资源图片,状态选择器XML文件在资源文件里有,能让对话框更好看

参考样式.

④找到这个View里面需要关心的控件,两个文本输入框,两个按钮.

如果是取消按钮,就把对话框关掉,要拿到对话框(AlertDialog)的引用(显示对话框AlertDialog = show()之后可以返回引用).AlderDialog.dismiss()关闭对话框;

如果是确定按钮,取出来两次输入密码的文本框,判断是否为空,或两个密码不一致,就提示用户密码不能为空,不一致.return.

如果不为空且一致,就把密码保存在SharedPreferences,获取编辑器,记得commit().

然后关闭对话框 AlderDialog.dismiss();

关闭之后,应该弹出输入密码的对话框.

⑤输入密码和设置密码的对话框基本一致,就是少了个文本,同时点击确认的时候就跟SharedPreferences中的密码做比较,如果成功就开启界面,如果失败就不让它进入界面.

ID问题:开发的时候是否允许同样的ID,在安卓代码布局文件中ID尽量保持不一致最好,同一个布局文件中ID必须不一致,不同的布局文件可以一致,但最好不一致,方便区分

4.手机防盗界面的开发

①继承acitivy,创建布局文件activity_lostfind,清单文件中定义.

②考虑到手机防盗界面的设置内容比较多,所以应该让用户第一次进入手机防盗界面的时候,应该进入设置向导的界面(参考搜狗输入法第一次安装之后的设置向导)

③判断用户是否进入过设置向导界面,如果用户是第一次进入就进入设置向导,否则直接进入放到界面.通过SharedPreferences去设置即可

5,设置向导界面ui的开发

①参数,标题栏高度48dp,背景颜色:#99CCFF,文字大小18sp,文本颜色fffffff白色

②任何一个view都有一个属性drawableleft控件左边的图片(上下左右都有)

淡黑色BBfffff

③按钮的背景颜色,通过状态选择器设置.文本颜色ffffff

④如果要使用安卓自带的资源图片,原本是@drawable/id,现在是@android:drawable/id

sdkplatformsandroid-16data esdrawable-hdpi>>>>>SDK资源查看路径dr

⑤如果应用程序的ui风格要求统一,有要求快速更改界面风格的需求,就需要把统一的风格进行抽取,这样以后修改配置比较方便.使用主题和样式

res/values/styles.xml下创建一个新的style标签

指定item条目,name是属性名,条目标签间的文本是具体的属性值

<item name=”android:Layout_width”>match_parent</item>

这样就可以把一个样式抽取出来.

需要使用这个样式的标签中定义style属性,指向创建的style标签style=”@style/样式名”.

⑥在TextView的文本中添加/n可以起到换行的作用.

⑦最后一个界面单选框checkbox

6,手机防盗的ui界面(去你妹的ui )

参考样式.

大方向是线性布局,一行有两个显示的时候就是相对布局

分割线就是一个高度为1imageview

淡灰色:#44000000

在设置向导最后一个界面中,如果用户点击完成之后就保存一个标记,告诉程序已经进行过设置向导了.

额外:如何把DiaLog由正方形变成圆角

直接网上搜圆角对话框即可,style,shape,自定义

原文地址:https://www.cnblogs.com/adventurer/p/5574402.html