2019独角兽企业重金招聘Python工程师标准>>>

需求:实现如上功能,用户可自由选择是否自动更新app,当选择时,提示自动更新已开启,当取消是,显示自动更新已关闭,只要点击设置自动更新字样或者选项按钮,均可选择。

接下来,使用自定义标签实现

第一步:在res/values/下创建一个attrs.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="SettingItemView"><attr name="mytitle" format="string" /><attr name="description_on" format="string" /><attr name="description_off" format="string" /></declare-styleable>
</resources>
注意:属性的名称不能与android中已定义的名称重复,否则会抛出属性名已定义的异常
由于使用的是android studio,在前面一篇文章有提到eclipse与android studio在开发自定义标签时的区别
在使用到自定义标签的布局文件中加入该命名空间
xmlns:zaizai=http://schemas.android.com/apk/res-auto
如我再activity-setting.xml中使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:zaizai="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="55dip"android:background="@android:color/holo_green_dark"android:gravity="center"android:text="设置中心"android:textColor="@android:color/black"android:textSize="22sp" /><com.zaizai.safty.ui.SettingItemViewzaizai:mytitle="设置自动更新"zaizai:description_on="设置自动更新已经开启"zaizai:description_off="设置自动更新已经关闭"android:id="@+id/siv_update"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>
自定义标签里的布局文件为
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="70dip"android:orientation="vertical"><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="10dip"android:layout_marginLeft="5dip"android:layout_marginTop="10dip"android:textColor="@android:color/black"android:textSize="18sp" /><TextViewandroid:id="@+id/tv_description"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/tv_title"android:layout_marginBottom="10dip"android:layout_marginLeft="5dip"android:textColor="@android:color/black"android:textSize="12sp" /><CheckBoxandroid:id="@+id/cb_status"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="10dip"android:clickable="false" /><TextViewandroid:layout_width="fill_parent"android:layout_height="0.2dip"android:layout_alignParentBottom="true"android:layout_marginLeft="5dip"android:layout_marginRight="5dip"android:background="#000000"android:keyTextColor="@android:color/black" /></RelativeLayout>
注意:<checkBox 一定要将其clickable置为false,使其失去被点击能力
因为CheckBox的点击事件的优先级大于TextView,如果不使其失去被点击的能力,那么当点击CheckBox的时候,自定义控件的其他组件将接收不到点击事件
自定义控件所属的类文件为
package com.zaizai.safty;import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;import com.zaizai.safty.ui.SettingItemView;/*** 设置中心类文件* Created by zaizai on 2015/10/14.*/
public class SettingActivity extends Activity {private SettingItemView siv_update;/*用来存储设置文件*/private SharedPreferences preferences;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.activity_setting);siv_update = (SettingItemView) this.findViewById(R.id.siv_update);preferences = getSharedPreferences("config",MODE_PRIVATE);boolean update_status = preferences.getBoolean("update", false);if (update_status) {/*自动升级已经开始*/siv_update.setChecked(true);/*siv_update.setDescription("自动升级已经开启");*/} else {/*自动升级已经关闭*/siv_update.setChecked(false);/*siv_update.setDescription("自动升级已经关闭");*/}siv_update.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SharedPreferences.Editor editor = preferences.edit();/*判断是否选中,调用自定义的函数*/if (siv_update.isChecked()) {//自动升级已被选中,再次点击应该将其置为falsesiv_update.setChecked(false);/* siv_update.setDescription("自动升级已经关闭");*/editor.putBoolean("update", false);} else {//没有打开自动升级siv_update.setChecked(true);/*siv_update.setDescription("自动升级已经开启");*/editor.putBoolean("update", true);}editor.commit();}});}
}
如上便完成了一个自定义更新控件

转载于:https://my.oschina.net/zaizaiangels/blog/518679

仔仔手机安全卫士demo(四)相关推荐

  1. Android实例-手机安全卫士(四十一)-选择自定义Toast背景

    一.目标 通过对话框选择并保存自定义的Toast背景        二.代码实现 1.复制layout文件夹中的model_setting_item.xml文件,以其为模板进行修改(取名为model_ ...

  2. [解读小程序]手机归属地查询Demo(四)

    [解读小程序]手机归属地查询Demo(四) 分析的程序来源: http://blog.csdn.net/y1258429182/article/details/52666290 下载链接:http:/ ...

  3. 基于Android的手机安全卫士的开发

    基于Android的手机安全卫士的开发 开发环境 处理器:Intel® Core™ i5-5200U CPU 2.20GHz 内存:4GB 硬盘:500GB 操作系统:Windows 7中文版,64位 ...

  4. 关于手机安全卫士开发详解

    手机安全卫士 1  初始化界面的搭建 1.1  界面UI 界面的ui主要完成的是背景图片的显示,以及版本号的显示,其中版本号是需要动态获取显示的. 主要实现:由于布局的特点选择相对布局,在Relati ...

  5. 手机安全卫士第十天(总结篇)

    手机安全卫士第十天实现的功能: 手机程序锁功能. 程序锁的原理:首先创建一个数据库,刚开始所有的程序都不在数据库里面,及查询到的数据都是未加锁应用,用户可以点击加锁按钮进应用进行加锁,点击之后该应用添 ...

  6. 手机安全卫士(七)----- 添加黑名单(防骚扰)

    经过长时间的学习,完成了这个APP的第二个功能,自己手动添加黑名单,防止一些骚扰电话和短信. 完成效果图: 这个功能大致就是者四张效果图. 设计思路: 首先在APP的这个应用的data文件下建立一个数 ...

  7. 学习笔记之《Android项目实战——手机安全卫士》

    [Android项目实战-手机安全卫士] 目标:快速积累开发经验,具备中级Android工程师能力. 如遇到难以理解的逻辑或功能,可以先将程序打断点观察程序的执行逻辑. 第一章项目简介:欢迎界面.主界 ...

  8. 山寨山寨版手机安全卫士项目

    这个是模仿了一下常见的手机安全卫士的应用的源码的,基本是实现了常用的功能的了,不过有的还是不够完善,大家可以多多研究一下吧. 源码项目下载:http://code.662p.com/view/7227 ...

  9. 金山手机安全卫士试用报告

    金山手机安全卫士试用报告 3.15晚会让人们了解到手机吸费陷阱,不明不白手机费就这样被无良SP业务吸走.类似情况不仅仅发生在山寨机,智能手 机也存在这些问题.智能手机用户可以根据自己的需要,安装各种应 ...

最新文章

  1. python3.8.1安装教程-记一次Python3.8.1安装
  2. 去除警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
  3. Ubuntu软件包deb的安装.
  4. 数学建模公选课第二节常微分方程2020.4.10-.12补(钉钉)
  5. CPU,MPU,MCU,SOC,SOPC联系与差别
  6. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...
  7. 您的API是什么情况?
  8. 《C++标准程序库》学习笔记5 — 第七章
  9. ubuntu php.ini 配置,ubuntu下配置PHP+JSON模块(apache) | 学步园
  10. 电脑qq浏览器怎么滚动截长图_电脑怎么快速截图?
  11. 【Gym - 101234J】Zero Game【单调队列】
  12. C++网络编程学习指南
  13. 小米开源:站在巨人肩膀上的创新
  14. 2012服务器系统下怎么分区,Windows Server 2012之更改系统分区
  15. 变形金刚2中的各个角色,及车型(带图)第二篇。
  16. (最小生成树)Codeforces Educational Codeforces Round 9 Magic Matrix
  17. JDK 内置图形界面工具:海阔凭鱼跃,天高任鸟飞
  18. 天敏VC4000视频开发设计方案
  19. 全球及中国中药行业发展机遇及投资价值评估报告2021-2027年
  20. 360html收藏夹,360极速浏览器收藏夹在什么地方?

热门文章

  1. python 面试必问,不会真的要打脸~
  2. qmainwindow 标题栏_QMainWindow菜单栏和工具栏
  3. install texlive-full on ubuntu
  4. 【java】自动写入数据到文件夹中
  5. css卷轴动画小程序,微信小程序登录页:CSS实现动画云层漂浮
  6. 第一次失效_直击震撼场面!宁乡新沩丰坝建成以来第一次高水位应急演练!
  7. 以图搜图:Python实现dHash算法
  8. python用jieba模块分词实现关键词提取
  9. slf4j mysql_能显示sql语句,没有报错,但是MySQL里没有表?还有,slf4j是必须的吗?...
  10. zip在python中的用法_Python中zip()函数用法实例教程