Android 左右滑动自定义控件

public class SlideButton extends View {private Bitmap mBackgroundBitmap;private Bitmap mSlideBitmap;private Paint mPaint;private float mStart;private int mDx;public SlideButton(Context context) {super(context);init(context);}public SlideButton(Context context, AttributeSet attrs) {super(context, attrs);init(context);}private void init(Context context) {mBackgroundBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.background);mSlideBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.slide_button);mPaint = new Paint();mPaint.setAntiAlias(true);mDx = 0;}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int widthMode = MeasureSpec.getMode(widthMeasureSpec);int widthSize = MeasureSpec.getSize(widthMeasureSpec);switch (widthMode) {case MeasureSpec.UNSPECIFIED:break;case MeasureSpec.AT_MOST:widthSize = mBackgroundBitmap.getWidth();break;case MeasureSpec.EXACTLY:break;}int heightMode = MeasureSpec.getMode(heightMeasureSpec);int heightSize = MeasureSpec.getSize(heightMeasureSpec);switch (widthMode) {case MeasureSpec.UNSPECIFIED:break;case MeasureSpec.AT_MOST:heightSize = mBackgroundBitmap.getHeight();break;case MeasureSpec.EXACTLY:break;}// 设置当前控件测量的尺寸setMeasureDimension(widthSize, heightSize);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(mBackgroundBitmap, 0, 0, mPaint);if (mDx < 0) {mDx = 0;}if (mDx > getMeasuredWidth() - mSlideBitmap.getWidth()) {mDx = getMeasuredWidth() - mSlideBitmap.getWidth();}canvas.drawBitmap(mSlideBitmap, mDx, 0, mPaint);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();switch (action) {case MotionEvent.ACTION_DOWN:mStart = event.getX();break;case MotionEvent.ACTION_MOVE:float endX = event.getX();mDx = (int) (endX - mStartX);break;case MotionEvent.ACTION_UP:int backgroundCenterPosition = getMeasuredWidth() / 2;int slideCenterPosition = mDx + mSlideButton.getWidth() / 2;if (slideCenterPosition < backgroundCenterPosition) {mDx = 0;} else {mDx = getMeasuredWidth() - mSlideButton.getWidth();}break;}invalidate();return true;}
}

Android 左右滑动控件相关推荐

  1. Android双向滑动控件

    Android双向滑动控件 kaxi4it 关注 一 效果图 二 使用方法 由于新版jcenter强制添加组织还要收费貌似,所以改用jitpack了 最新版本号 在你root的gradle中添加引用 ...

  2. Android无限滑动控件实现

    无限滑动控件 无限滑动控件的预期效果是添加有限个View实现无限滑动的效果. 我的实现是通过重写dispatchDraw,对canvas画布进行偏移达到无限滑动的效果. 效果如图: github地址: ...

  3. Android左右滑动控件实现开关的切换效果

    /**  * 开关控件,通过左右滑动控件实现开关的切换效果 <br>  * 使用时需要设置开关状态监听{@link OnSwitchStateChangeListener} <br& ...

  4. android横向滑动控件,Android学习——HorizontalScollview水平滚动控件

    HorizatalScollView控件只是支持水平滚动,而且它只能包含一个控件,通常是在标签中定义一个 标签并且在标签中android:orientation属性值设置为horization.然后在 ...

  5. Android 自动换行添加控件

    PS:转载请注明出处,谢谢 最近在项目里面有几个需要根据返回的数据来自动添加控件的地方,在网上找了一些,然后加上自己写的一些,都一起整理完,然后给自己做个备注,啦啦啦啦啦啦~~~~ 先贴一张镇楼效果图 ...

  6. Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout

    左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个, ...

  7. android 光晕动画,Android去掉SrollView、GrdiView、RecycleView、ViewPager等可滑动控件滑动到边缘的光晕效果...

    下面以RecycleView为例,其他可滑动控件也是一样的 在XML中设置: android:id="@+id/rv_recycle_view" android:layout_wi ...

  8. android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

    各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView.闲话休提,言归正转.让我们一起Talk Androi ...

  9. Android果冻效果滑动控件

    类似于iOS有阻尼效果的滑动控件,一般我们比较亲切地称之为果冻控件 比较常见的地方,如微信里[我]的那个面板模块,即使没有再多的选项,也不会很生硬的不允许用户滑动. 微信是的处理方法是让用户滑动,但最 ...

  10. android 如何拖动控件的实现

    今天,简单讲讲android如何拖动控件. 之前,需要做一个功能,实现控件按照手势进行拖动,拖动到移动位置时可以进行一些操作.当时不知道怎么做,于是在网上查找了资料,终于是解决了这个问题.这里记录一下 ...

最新文章

  1. Windows server 2008 R2 登录密码恢复
  2. matlab程序崩溃怎么解决,跪求matlab达人帮我看看程序,我实在是要崩溃了......
  3. 减少系统资源占用的15个CSS常识
  4. 阿里云MySQL按流量计费吗_阿里云服务器按使用流量计费带宽峰值1M和100M费用方面有区别吗?...
  5. 为什么不要使用长事务
  6. Centos eclipse打开文件自动退出
  7. Linux学习总结(75)—— Linux history 命令实用技巧
  8. mysql 统计 1的数量_利用MySQL统计一列中不同值的数量方法示例
  9. 升级macOS Big Sur 无法开机/死机怎么办?
  10. 教你win7关闭开机动画,大幅度加快开机时间
  11. java7 3dm下载_3DM游戏运行库合集安装包v2.8
  12. vue导出Excel组件
  13. 微信公纵平台基本配置php_微信公众平台开发之配置与请求_PHP
  14. 国庆促销海报模板素材
  15. openfire4.2.1 + smack4.2.2即时通信工具开发(android端登录、发送消息、接收消息)
  16. 腾讯笔试经验-不是大牛-勿看
  17. ThingsBoard 仪表板状态
  18. matlab根号下是多项式,多项式求根
  19. CorelDRAW x4提示非法软件产品被禁用解决方法教程
  20. 怎样用计算机命令修复软件,WINDOWS系统损坏无需重装,利用命令一键轻松修复...

热门文章

  1. 网络音乐是时候该聊聊“大数据”了
  2. 导出excel合并单元格
  3. Unity,C#版的动画曲线,Tween:EaseIn,EaseOut,EaseInOut(编程语言翻译版本)
  4. 2、Android底层机制
  5. C++学习笔记:从C到C++之C++对C的加强
  6. 转自【MDCC技术大咖秀】Android内存优化之OOM
  7. 百度地图实现marker显示数字
  8. 金山wps支持java接口开发吗_金山wps开放平台使用踩坑实录
  9. 深入解析设置磁盘写保护
  10. 树形动态规划(树状DP)小结