手机卫士02_gridView,statelist.ui相关
Posted 抓根宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机卫士02_gridView,statelist.ui相关相关的知识,希望对你有一定的参考价值。
1.1 新控件 GridView 类似ListView,但是可以指定每一行的列数
GridView和ListView都继承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来判断.
按照页面的条目布局,position为0的时候,就是手机防盗
②进入手机防盗之前,判断用户是否设置过密码(也有在设置中心中设置,逻辑差不多)
定义一个方法: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
\sdk\platforms\android-16\data\res\drawable-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 )
参考样式.
大方向是线性布局,一行有两个显示的时候就是相对布局
分割线就是一个高度为1的 imageview
淡灰色:#44000000
在设置向导最后一个界面中,如果用户点击完成之后就保存一个标记,告诉程序已经进行过设置向导了.
额外:如何把DiaLog由正方形变成圆角
直接网上搜圆角对话框即可,style,shape,自定义
以上是关于手机卫士02_gridView,statelist.ui相关的主要内容,如果未能解决你的问题,请参考以下文章