android自定义状态开关-modeswitch

本文介绍如何创建一个自定义的状态开关ModeSwitch,以提升应用界面的审美体验。内容包括实现原理,即通过继承View,重写onDraw方法绘制不同状态的图片,并在onTouchEvent中处理滑动交互,配合线程实现平滑的动画效果。参考链接提供详细教程。
摘要由CSDN通过智能技术生成

    状态开关这一功能目前市场上的应用运用的比较广泛,而且也很高大上的感觉.Android 4.0以后也提供了switch控件,同样的状态开关效果,但虽然功能适用,审美就是差点.这是广大工程师的毛病,尤其Google工程师,功能强大,界面简单.哈哈..............

是简单的状态按钮,先看一下效果图.

先讲一下实现原理,自定义控件,顾名思义,我们就要继承View.覆盖onDrow方法,在其中通过Canvas绘制一红一灰两个图片,和一个圆形的按钮图片.同时覆盖onTouchEvent方法,实现滑动效果,同时通过线程实现动画效果.

转载注明出处:http://blog.csdn.net/gaoshouxiaodi/article/details/25953473点击打开链接

package com.example.modeswitch;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;

/**
 * 组件分为三种状态:打开、关闭、正在滑动<br/>
 * 使用方法:        
 * 	ModeSwitch  switch = new ModeSwitch(this); 
 *	switch.setOnSwitchChangedListener.onSwitchChangedListener); 
 *	linearLayout.addView(slideSwitch); 
注:也可以加载在xml里面使用
 */
public class ModeSwitch extends View
{
	public static final String TAG = "ModeSwitch ";
	public static final int SWITCH_OFF = 0;//关闭状态
	public static final int SWITCH_ON = 1;//打开状态
	public static final int SWITCH_SCROLING = 2;//滚动状态
	
	//用于显示的文本
	private String mOnText = "打开";
	private String mOffText = "关闭";

	private int mSwitchStatus = SWITCH_OFF;

	private boolean mHasScrolled = false;//表示是否发生过滚动

	private int mSrcX = 0, mDstX = 0;
	
	private int mBmpWidth = 0;
	private int mBmpHeight = 0;
	private int mThumbWidth = 0;

	private 	Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
	
	private OnSwitchChangedListener mOnSwitchChangedListener = null;

	//开关状态图
	Bitmap mSwitch_off, mSwitch_on, mSwitch_thumb;

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

	public ModeSwitch (Co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值