- 浏览: 85437 次
- 性别:
- 来自: 北京
最新评论
-
LiuYiJie2007:
public static String getPublicK ...
Android publickey获取 -
LiuYiJie2007:
getPublicKey( )是你自己写法方法 是什么?new ...
Android publickey获取 -
liujia9234:
我试了,不行,最不靠谱了
最靠谱的禁止ViewPager滑动方法 -
kedongjun:
非常强大
关于android通讯录加载大数据的优化问题 -
xunhuan01:
view.getImageMatrix(), savedMat ...
多点触摸放大图片的自定义listener
滑动开关控件
- 博客分类:
- android技术文章
public class SlidButton extends View implements OnTouchListener { private boolean nowChoose = false;// 记录当前按钮是否打开,true为打开,false为关闭 private boolean onSlip = false;// 记录用户是否在滑动 private float downX, nowX; // 按下时的x,当前的x private Rect btn_on, btn_off;// 打开和关闭状态下,游标的Rect private boolean isChgLsnOn = false;//是否设置监听 private OnChangedListener changedLis; private Bitmap bg_on, bg_off, slip_btn; public SlidButton(Context context, AttributeSet attrs) { super(context, attrs); init(); } public SlidButton(Context context) { super(context); init(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub setMeasuredDimension(bg_on.getWidth(), bg_on.getHeight()); } private void init() { // 载入图片资源 bg_on = BitmapFactory.decodeResource(getResources(), R.drawable.sild_bg_on); bg_off = BitmapFactory.decodeResource(getResources(), R.drawable.sild_bg_off); slip_btn = BitmapFactory.decodeResource(getResources(), R.drawable.sild_btn); // 获得需要的Rect数据 btn_on = new Rect(0, 0, slip_btn.getWidth(), slip_btn.getHeight()); btn_off = new Rect(bg_off.getWidth() - slip_btn.getWidth(), 0, bg_off.getWidth(), slip_btn.getHeight()); setOnTouchListener(this); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Matrix matrix = new Matrix(); Paint paint = new Paint(); float x; { if (nowX<(bg_on.getWidth()/2)) //滑动到前半段与后半段的背景不同,在此做判断 canvas.drawBitmap(bg_off, matrix, paint);//画出关闭时的背景 else canvas.drawBitmap(bg_on, matrix, paint);//画出打开时的背景 if (onSlip) {//是否是在滑动状态, if(nowX >= bg_on.getWidth())//是否划出指定范围,不能让游标跑到外头,必须做这个判断 x = bg_on.getWidth() - slip_btn.getWidth()/2;//减去游标1/2的长度 else x = nowX - slip_btn.getWidth()/2; }else { if(nowChoose)//根据现在的开关状态设置画游标的位置 x = btn_off.left; else x = btn_on.left; } if (x < 0 ) //对游标位置进行异常判断.. x = 0; else if(x > bg_on.getWidth() - slip_btn.getWidth()) x = bg_on.getWidth() - slip_btn.getWidth(); canvas.drawBitmap(slip_btn, x,0, paint);//画出游标. } } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) {//根据动作来执行代码 case MotionEvent.ACTION_MOVE://滑动 nowX = event.getX(); break; case MotionEvent.ACTION_DOWN://按下 if (event.getX() > bg_on.getWidth() || event.getY() > bg_on.getHeight()) return false; onSlip = true; downX = event.getX(); nowX = downX; break; case MotionEvent.ACTION_UP://松开 onSlip = false; boolean lastChoose = nowChoose; if (event.getX() >= (bg_on.getWidth()/2)) nowChoose = true; else nowChoose = false; if(isChgLsnOn && (lastChoose != nowChoose))//如果设置了监听器,就调用其方法. changedLis.OnChanged(nowChoose); break; default: break; } invalidate(); return true; } public void SetOnChangedListener(OnChangedListener l){//设置监听器,当状态修改的时候 isChgLsnOn = true; changedLis = l; } public interface OnChangedListener { abstract void OnChanged(boolean checkState); } }
发表评论
-
Android_低版本使用ActionBar
2014-08-26 11:09 1066转载 http://blog.csdn.net/tianjf0 ... -
如何屏蔽android webview高度选中框
2014-02-19 12:04 710如标题所述,解决方法是在 html的样式中加入 *{-webk ... -
屏蔽ScrollView惯性滚动的方法
2013-08-08 13:36 5666ScrollView中有一种惯性滚动的效果,想让这个Scrol ... -
android 图片LOMO效果
2013-07-25 13:59 840import android.graphics.Bitmap; ... -
GitHub最火的android 项目
2013-07-25 13:14 751GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到 ... -
listview 点击列表项时,项中的Button会触发点击效果
2013-06-05 19:21 1250开发中,难免会在列表项中, 加入Button ,而button ... -
圆形不滚动的进度条
2013-05-17 11:38 804这种效果的进度条 代码如下: package com. ... -
最靠谱的禁止ViewPager滑动方法
2013-05-15 14:44 4919最近做项目要求某种情况下ViewPager不能滑动,在网上找了 ... -
viewpager主页面响应子页面 onkeydown事件的方法
2013-05-13 19:35 1549大家在开发中不少地方要用到ViewPager这个类,ViewP ... -
Mina 学习笔记 TCP主要接口
2013-05-05 23:21 1172(1.)IoService: 这个接口 ... -
android动画插件器
2013-04-27 10:01 782首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关 ... -
imageView 的 android:maxHeight,maxWidth属性
2013-03-29 10:17 777大家使用android:maxHeight,maxWidth属 ... -
android中获取下载地址文件的类型的方法
2013-03-28 11:33 976MimeTypeMap mimeTypeMap = Mime ... -
res与res-auto的区别
2013-03-27 14:55 3920通常我们在布局文件中使用自定义属性的时候 会这样写 xmln ... -
TextView使用SpannableString设置复合文本
2013-03-23 23:35 8381、BackgroundColorSpan 背景色 Sp ... -
Android编程之SparseArray<E>详解
2013-03-21 23:03 940一、构造 从构造方法我 ... -
判断系统是否支持 DownloadManager服务
2013-03-18 14:25 816public static boolean isDownloa ... -
android ndk native_activity.h
2013-03-12 15:25 1731#ifndef ANDROID_NATIVE_ACTIVITY ... -
android ndk obb.h
2013-03-12 15:14 1101#ifndef ANDROID_OBB_H #define A ... -
Android NDK APIs
2013-03-12 14:53 947使用 Android NDK 的一般方法: 1、假如想要使用f ...
相关推荐
qt5仿安卓苹果自定义滑动开关控件显示开关状态,使用定时器控制滑动效果,自定义封装类demo,switch, on与off
Android自定义控件之滑动开关 Android自定义控件之滑动开关 http://blog.csdn.net/eeeduo/article/details/37606567
vb6 控件源码,左右滑动开关,代码实现简单清晰 适用场景 1.基本满足checkbox业务需求 2.状态显示 当前版本功能描述 1.只添加了onClick事件 2.主题颜色修改 3.自适应控件大小
Android自定义控件之实现滑动选择开关
Android超炫自定义滑动开关控件,高仿IOS系统,珍藏版!
Android自定义开关按钮(滑动,点击(方法中已经提供,需自我实现))
自定义的滑动开关效果,可以直接使用,也可以借鉴代码自己重新弄图片
自己用WPF的XAML语言写的一个类似于苹果手机上的滑动按钮的开关,可以直接使用,程序比较简单易懂,没有任何生涩的引用,涉及WPF的资源定义,控件布局,模板自定义,事件触发,动画实现等基本知识,只是新手学习如何...
http://blog.csdn.net/huang86411/article/details/25655069 的配套源码
Android自定义的滑动开关是方形的,不够美观,仿苹果滑动开关做的自定义控件,可以修改开关的样式。
自定义控件之仿IOS适用于Android的滑动开关
多个滑动开关可以单独的... 大概思路是 开关控件实现view,通过判断触摸的位置来觉得滑块的显示位置。在控件类中有一个数据接口,这个接口中可以获得开关的状态,通过不同的接口实现类,实现了多个滑动开关的单独控制。
自定义空间控件,仿微信的滑动开关,主要是知道该自定义控件的原理
以上是以一个自定义滑动开关的案例来总结一下自定义View控件的编写流程
Switch.js一个iOS样式滑动开关按钮JS插件
高仿iOS中的开关控件,Android中滑动开关的实现。
点击切换开关,不支持滑动
ToggleView自定义开关控件表征上没有跟Android原生的控件有什么相似的地方,而且在滑动的效果上也没有沿袭Android原生的地方,所以我们的自定义ToggleView选择继承View 同样的自定义控件需要复写三个构造方法 //...
一个简单的仿iPhone滑动开关的控件,适合项目需要的时候和学习之用,gb编码