文档章节

仔仔手机安全卫士demo(四)

A
 Angels_安杰
发布于 2015/10/18 22:01
字数 785
阅读 19
收藏 0
点赞 0
评论 0

imageimage

需求:实现如上功能,用户可自由选择是否自动更新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">

    <TextView
        android: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.SettingItemView
        zaizai: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">

    <TextView
        android: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" />

    <TextView
        android: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" />

    <CheckBox
        android: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" />

    <TextView
        android: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;

    @Override
    protected 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() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor = preferences.edit();

                /*判断是否选中,调用自定义的函数*/
                if (siv_update.isChecked()) {
                    //自动升级已被选中,再次点击应该将其置为false
                    siv_update.setChecked(false);
                   /* siv_update.setDescription("自动升级已经关闭");*/
                    editor.putBoolean("update", false);
                } else {
                    //没有打开自动升级
                    siv_update.setChecked(true);
                    /*siv_update.setDescription("自动升级已经开启");*/
                    editor.putBoolean("update", true);
                }
                editor.commit();
            }
        });
    }
}
如上便完成了一个自定义更新控件

© 著作权归作者所有

共有 人打赏支持
A
粉丝 5
博文 138
码字总数 105958
作品 0
广州
程序员
仔仔手机安全卫士demo(一)

第一步:设计splash页面,即进入主页面前的一个欢迎页面 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool......

Angels_安杰 ⋅ 2015/10/13 ⋅ 0

仔仔手机安全卫士demo(三)

由于前两天忙于学校的实习,就断了两三天没有学习android,今天实习结束,又可以继续了。 下面我将给出进入主页面的entryHome函数的实现以及使用gridView布局功能界面 entryHome函数实现 /*...

Angels_安杰 ⋅ 2015/10/03 ⋅ 0

仔仔安全卫士demo(二)

第一步:启动tomcat,在tomcat中加入如下json文件 {"version":"2.0","description":"我是最新的,来下载我把","apkurl":"http://192.168.1.103:8080/zaizaimobilesafe-2.0.apk"} 第二步:实现...

Angels_安杰 ⋅ 2015/10/13 ⋅ 0

汪仔重出江湖开挂撒币大战 引画风突变

  【IT168 资讯】“撒币”、“瓜分百万奖金”、“直播答题”……2018 刚开年,互联网行业又出现一个新玩法,短短十几天内,四五个直播答题软件相继火了:王思聪投资的 “冲顶大会”,映客推...

it168网站 ⋅ 01/11 ⋅ 0

论切图仔的自我修养

一、Photoshop Adobe Photoshop 是设计师的必备,所以也是前端切图仔的必备工具。 Photoshop CC 2015 墙裂推荐安装2015版,有诸多改进,不少新功能是与我们切图仔息息相关的。 工作区 常用快...

iNiL0119 ⋅ 2015/09/16 ⋅ 0

关于接入第三方推送,国产手机无法接收到推送消息的的问题

当你使用小米手机、华为手机、oppo、魅族手机或者乐视等,并且在应用中使用第三方推送服务无法接收到推送时,你可能需要检查如下设置: 一、华为手机 1、在“设置——应用程序——开机自启项...

张小贤 ⋅ 2015/12/14 ⋅ 2

码仔:为何别人的团队战斗力爆表?

在IT行业初级程序员市场饱和的情况下,初入职场的码仔经历了千辛万苦,花了整整1个月的时间,终于拿到了一家创业公司的offer。入职的第一天,他早早的来到了公司,居然还没开门!什么鬼?掏出...

陈宇明 ⋅ 2017/11/26 ⋅ 0

直播答题狂撒币,这些“AI开挂神器”如何在10秒内算出正确答案?

多数时候,开挂神器很有用,而不经意间,它又变成了“猪队友”。 12道问题、3个选项、10秒时间……由“国民老公”王思聪带来的“直播答题”模式火了。继冲顶大会之后,今日头条的“百万英雄”...

行者武松 ⋅ 03/07 ⋅ 0

大白话描述Intel的处理器漏洞,让所有人都能看懂

大白话描述Intel的处理器漏洞,让所有人都能看懂 程序师2018-01-080 阅读 业界观察 作为科班出身码农,对计算机体系结构有一定了解,那我就尝试用大白话来说一下这个问题吧。AMD其实也存在漏...

程序师 ⋅ 01/08 ⋅ 0

即时通讯asyncsocket使用疑问

@芳仔小脚印 你好,想跟你请教个问题: 我现在在弄一个带即时通讯功能的demo,现在我有个问题,整个程序只能创建一个socket,按照你说的单例方法,我想问下你,这些连接还有接受服务器返回的...

谁抢名字啊 ⋅ 2014/08/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部