zoukankan      html  css  js  c++  java
  • 手机卫士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,自定义

  • 相关阅读:
    [笔记].新唐M051型号的后缀解读
    [转载].怎样理解阻抗匹配
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) TFTLCD(控制器为ILI9325)驱动
    [转载].关于STM32的CPU为32位,定时器却为16位的探讨
    [笔记][朝花夕拾][Multisim基础电路范例].第一章 RLC电路,第九节 基尔霍夫电流定律
    [原创].如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) ADS7843触摸屏驱动测试
    [笔记][朝花夕拾][Multisim基础电路范例].第一章 RLC电路,第十一节 叠加定理
    [笔记].怎样在IAR中加入编译所需库的头文件?
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) 从SD卡内读取图片文件,然后显示在TFTLCD上
  • 原文地址:https://www.cnblogs.com/adventurer/p/5574402.html
Copyright © 2011-2022 走看看