自定义开关按钮

attrs.xml<declare-styleable name="EaseSwitchButton">    <attr name="switchOpenImage" format="reference"/>    <attr name="switchCloseImage" format="reference"/>    <attr name="switchStatus">        <enum name="open" value="0"/>        <enum name="close" value="1"/>    </attr></declare-styleable>
EaseSwitchButton.java
package com.easemob.easeui.widget;

import android.content.Context;import android.content.res.TypedArray;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.FrameLayout;import android.widget.ImageView;

import com.easemob.easeui.R;

public class EaseSwitchButton extends FrameLayout{

    private ImageView openImage;    private ImageView closeImage;

    public EaseSwitchButton(Context context, AttributeSet attrs, int defStyle) {        this(context, attrs);    }

    public EaseSwitchButton(Context context) {        this(context, null);    }

    public EaseSwitchButton(Context context, AttributeSet attrs) {        super(context, attrs);

        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.EaseSwitchButton);        Drawable openDrawable = ta.getDrawable(R.styleable.EaseSwitchButton_switchOpenImage);        Drawable closeDrawable = ta.getDrawable(R.styleable.EaseSwitchButton_switchCloseImage);        int switchStatus = ta.getInt(R.styleable.EaseSwitchButton_switchStatus, 0);        ta.recycle();

        LayoutInflater.from(context).inflate(R.layout.ease_widget_switch_button, this);        openImage = (ImageView) findViewById(R.id.iv_switch_open);        closeImage = (ImageView) findViewById(R.id.iv_switch_close);        if(openDrawable != null){            openImage.setImageDrawable(openDrawable);        }        if(closeDrawable != null){            closeImage.setImageDrawable(closeDrawable);        }        if(switchStatus == 1){            closeSwitch();        }

    }

    /**     * 开关是否为打开状态     */    public boolean isSwitchOpen(){        return openImage.getVisibility() == View.VISIBLE;    }

    /**     * 打开开关     */    public void openSwitch(){       openImage.setVisibility(View.VISIBLE);       closeImage.setVisibility(View.INVISIBLE);    }

    /**     * 关闭开关     */    public void closeSwitch(){       openImage.setVisibility(View.INVISIBLE);       closeImage.setVisibility(View.VISIBLE);    }}
ease_widget_switch_button.xml
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content" >

    <ImageView        android:id="@+id/iv_switch_open"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/ease_open_icon"        android:visibility="visible" />

    <ImageView        android:id="@+id/iv_switch_close"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/ease_close_icon"        android:visibility="invisible" />

</FrameLayout>


引用:
<com.easemob.easeui.widget.EaseSwitchButton    android:id="@+id/switch_notification"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentRight="true"    android:layout_centerVertical="true" />
notifiSwitch.closeSwitch();
notifiSwitch.openSwich();
注:此源码摘自环信
时间: 2024-11-05 18:50:43

自定义开关按钮的相关文章

WINFORM 自定义开关按钮控件-

本文章转载:http://www.cnblogs.com/feiyangqingyun/archive/2013/06/15/3137597.html OK,大工告成,上图演示效果. 源码下载:http://files.cnblogs.com/feiyangqingyun/myButtonCheckTest.zip WINFORM 自定义开关按钮控件-,布布扣,bubuko.com

android开发笔记之自定义开关按钮

今天来讲讲自定义单个控件,就拿开关按钮来讲讲,相信大家见了非常多这样的了,先看看效果: 我们可以看到一个很常见的开关按钮,那就来分析分析. 首先: 这是由两张图片构成: ①一张为有开和关的背景图片 ②一张为控制开和关的滑动按钮 第一步: 写个类继承View,并重写几个方法: 第一个为构造函数,重写一个参数的函数和两个参数的函数就够了,因为两个参数的函数能够使用自定义属性 第二个为控制控件的大小–>protected void onMeasure(int widthMeasureSpec, int

Android自定义控件系列三:自定义开关按钮(三)--- 自定义属性

尊重原创,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/40855377 接之前的:Android自定义控件系列二:自定义开关按钮(一)和Android自定义控件系列三:自定义开关按钮(二)继续,今天要讲的就是如何在自定义控件中使用自定义属性,实际上这里有两种方法,一种是配合XML属性资源文件的方式,另一种是不需要XML资源文件的方式:下面我们分别来看看: 一.配合XML属性资源文件来使用自定义属性: 那么还是针对我们之前写的自定义

Android之——史上最简单自定义开关按钮的实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48102871 很多时候,我们在很多无论是Android还是IOS的APP中都会遇到这样的一种效果,有一个按钮,我们点击一下,便会滑动一下,一会显示"开",一会显示"关",这便是开关按钮了,比如:很多Android手机的设置功能里,就有很多功能是用开关按钮实现的,那么这些开关按钮时如何实现的呢?下面,就让我们一起来实现这个功能吧. 一.原理 我们在界面

Android自定义控件系列二:自定义开关按钮(一)

这一次我们将会实现一个完整纯粹的自定义控件,而不是像之前的组合控件一样,拿系统的控件来实现:计划分为三部分:自定义控件的基本部分,自定义控件的触摸事件的处理和自定义控件的自定义属性: 下面就开始第一部分的编写,本次以一个定义的开关按钮为例,下面就开始吧: 先看看效果,一个点击开关按钮,实现点击切换开关状态: 为了能够讲解清晰,还是来一些基本的介绍. 首先需要明确的就是自定义控件还是继承自View这个类,Google在View这个类里面提供了相当多的方法供我们使用,使用这些方法我们可以实现相当多的

Android—自定义开关按钮实现

我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子………… 个人认为还是自定义的比较好,先上个效果图: 实现过程: 1.准备开关不同状态的两张图片放入drawable中. 2.xml文件中添加代码: <ToggleButton android:id="@+id/switch1" android:layout_width="wrap_content" android:layout_height=

[转]Android自定义控件系列五:自定义绚丽水波纹效果

出处:http://www.2cto.com/kf/201411/353169.html 今天我们来利用Android自定义控件实现一个比较有趣的效果:滑动水波纹.先来看看最终效果图: 图一 效果还是很炫的:饭要一口口吃,路要一步步走,这里我们将整个过程分成几步来实现 一.实现单击出现水波纹单圈效果: 图二 照例来说,还是一个自定义控件,这里我们直接让这个控件撑满整个屏幕(对自定义控件不熟悉的可以参看我之前的一篇文章:Android自定义控件系列二:自定义开关按钮(一)).观察这个效果,发现应该

Android自定义控件——仿ios开关按钮

转载请注明出处:http://blog.csdn.net/allen315410/article/details/39319057 大凡在公司做客户端产品开发的都会发现,android和ios的差异化,ios得益于"老乔"的精心设计,界面用户体验做到了极致,而android秉承开源思想,界面用户体验百家各有其长,相互不得统一.不说废话,先上图,看看ios的"开关按钮": 往往在公司,产品设计原型优先参考了ios的设计,这下可苦了android开发者,android开

Android自定义控件系列五:自定义绚丽水波纹效果

尊重原创!转载请注明出处:http://blog.csdn.net/cyp331203/article/details/41114551 今天我们来利用Android自定义控件实现一个比较有趣的效果:滑动水波纹.先来看看最终效果图: 图一 效果还是很炫的:饭要一口口吃,路要一步步走,这里我们将整个过程分成几步来实现 一.实现单击出现水波纹单圈效果: 图二 照例来说,还是一个自定义控件,这里我们直接让这个控件撑满整个屏幕(对自定义控件不熟悉的可以参看我之前的一篇文章:Android自定义控件系列二