文档章节

一个简单的android自定义view(Switch Button for api < 14)

pillsilly
 pillsilly
发布于 2014/11/27 13:51
字数 316
阅读 1541
收藏 6

1.编写主类

package com.sample.button;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.CompoundButton;

import com.example.buttonsample.R;

public class MyButton extends CompoundButton {

	public MyButton(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	private Drawable imgOFF;
	private Drawable imgON;

	public MyButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyButton, 0, 0);
		try {
			imgOFF = a.getDrawable(R.styleable.MyButton_imgOFF);
			imgON = a.getDrawable(R.styleable.MyButton_imgON);
		} catch (Exception e) {
			e.printStackTrace();
		}
		a.recycle();
	}

	public MyButton(Context context) {
		super(context);
	}

	@Override
	public void setChecked(boolean checked) {
		super.setChecked(checked);
		udpateDrawable();

	}

	private void udpateDrawable() {
		if (this.isChecked()) {
			Log.e(MyButton.class.getName(),"changing to imgON");
			this.setBackgroundDrawable(imgON);
		} else {
			Log.e(MyButton.class.getName(),"changing to imgOFF");
			this.setBackgroundDrawable(imgOFF);
		}
	}

	@Override
	protected void onFinishInflate() {
		udpateDrawable();
		super.onFinishInflate();
	}

}



2.编写attrs定义文件(res/values/attrs.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources> 
    <declare-styleable name="MyButton">
        <attr name="imgON" format="reference" />
        <attr name="imgOFF" format="reference" />
    </declare-styleable> 
</resources>



3.涉及到的2个图片资源如下

res/drawable/off.png

res/drawable/on.png

4.测试用activity的layout文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.example.buttonsample"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.sample.button.MyButton
        android:id="@+id/testmy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        app:imgOFF="@drawable/off"
        app:imgON="@drawable/on" >
    </com.sample.button.MyButton>

</LinearLayout>


5.实际效果即:

点击按钮时,按钮会在以下2个图片之间切换.

© 著作权归作者所有

上一篇: tomcat 常用调整
下一篇: Continuous Integration
pillsilly
粉丝 2
博文 23
码字总数 45873
作品 0
杭州
私信 提问
android 自定义View与Attr风格Style风格样式

一.自定义View的主题和风格样式 前言: android开发中,不可避免的要设定某一类按钮的按压,点击,聚焦等状态,通常对于这一类问题而言,最原始的方式就是在布局文件中亲自设定,然而对于一个...

IamOkay
2014/12/07
4.7K
0
Android中Toast的用法简介

Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。下面用一个实例来看看如何使用Toast。 1.默认效...

Reya滴水心
2014/03/10
62
0
android Toast大全(五种情形)建立属于你自己的Toast

Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。 1.默认效果 代码 Toast.makeText(getApplicationContext(), "默认Toast样式", Toas...

迷途d书童
2012/08/30
2.4K
6
android Toast大全(五种情形)建立属于你自己的Toast

Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。 1.默认效果 代码 Toast.makeText(getApplicationContext(), "默认Toast样式", Toas...

xiahuawuyu
2012/10/08
178
1
建立属于你自己的Toast

Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。 1.默认效果 代码 Toast.makeText(getApplicationContext(), "默认Toast样式", Toas...

长平狐
2012/10/09
225
0

没有更多内容

加载失败,请刷新页面

加载更多

Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
31分钟前
4
0
8086汇编基础 start 程序入口标签的示例

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
37分钟前
4
0
uni app 零基础小白到项目实战2

<template> <scroll-view v-for="(card, index) in list" :key="index"> <view v-for =(item, itemIndex) in card"> {{item.value}}</view> </scroll-view></template> GraceUi va......

达达前端小酒馆
38分钟前
4
0
http keep-alive 解释

本文转载于:专业的前端网站➜http keep-alive 解释 1、概念 keep-alive示例: keep-alive模式(又称持久连接、连接重用)时,keep-alive功能使客户端到服务器端的连接持续有效,当出现对服务...

前端老手
43分钟前
4
0
groovy爬虫实例——历史上的今天

最近做了一个历史上今天的爬虫程序,跟历史天气数据源一致,数据量比较小,几十秒就爬完了。中间遇到一些问题,一起分享出来供大家参考。本项目源码和相关数据已经上传到了github,有兴趣的朋...

八音弦
53分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部