SrollToollBy和rollTo有什么区别?SrollToollBy和rollTo的区别:每日关注
(资料图)
SrollTo
SrollBy和SrollTo的区别
Scroller
案例–滑动解锁
package com.lxk.slideunlock;import com.lxk.slideunlock.view.SildeUnLockView;import com.lxk.slideunlock.view.SildeUnLockView.OnUnLockListener;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.Toast;public class MainActivity extends Activity implements OnUnLockListener {private SildeUnLockView mSlv;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSlv = (SildeUnLockView) findViewById(R.id.slv); mSlv.setOnUnLockListener(this);}@Overridepublic void UnLock() { //利用接口回调方法 Toast.makeText(this,"成功解锁", 0).show(); finish();}}
package com.lxk.slideunlock.view;import com.lxk.slideunlock.R;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.provider.ContactsContract.CommonDataKinds.Event;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.Scroller;/** * 滑动解锁--View是表示显示在UI界面上面的 * 自定义View的三个步骤: * 1.测量自己的大小 * 2.设置自己现在在父控件的位置 * 3.绘画该控件出来 */public class SildeUnLockView extends View{private static boolean isRight = false;private Paint mPaint;private Scroller mScroller;private Bitmap mBitmap;public SildeUnLockView(Context context, AttributeSet attrs) { super(context, attrs); //创建一个画笔 mPaint = new Paint(); //创建一个滑动效果的工具类Scroller(context)--- mScroller = new Scroller(context); //加载一个图片 mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.switch_button);}//测量自己的大小@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //super.onMeasure(widthMeasureSpec, heightMeasureSpec);//这个是使用父类布局的大小 //设置图片的宽度跟父类一样 int width = MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(width, mBitmap.getHeight());}//绘画@Overrideprotected void onDraw(Canvas canvas) { //绘画该图片出来 canvas.drawBitmap(mBitmap, 0, 0, mPaint);}float mDownX,mMoveX,mUpX;//重写父类的onTuchEvent(MotionEvent event)方法来监听触摸事件@Overridepublic boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN://监听按下的动作 //开始规定如果鼠标按下的X坐标不在图片的宽度/2和图片的宽度之间,就不允许滑动 mDownX=event.getX(); if (mDownXmBitmap.getWidth()) { return false;//false则交给系统处理 不需要我们处理,相当不允许图片滑动了 } //执行按下的操作方法 performDown(); break; case MotionEvent.ACTION_MOVE://鼠标触摸移动的动作 //获取移动的X的位置 mMoveX=event.getX(); performMove(); break; case MotionEvent.ACTION_UP://鼠标抬起的动作 mUpX=event.getX(); performUp(); break; } return true;//true表示事件发生的改变,都由我们自己处理,不需要别人}//执行抬起的动作方法private void performUp() { //规定如果抬起来的X坐标大于控件背景一般则直接移动到右边的边界处,否则直接移动到左边的边界 int dx=0; if (mUpX>getMeasuredWidth()/2) { isRight=true; dx=(int) (mBitmap.getWidth()-getMeasuredWidth()-getScrollX()); System.out.println("dx=== 1"+dx); } else { dx=-getScrollX(); System.out.println("dx===2 "+dx); } int durantion=dx*7; //如果时间太长则就按1000毫秒来算 if (durantion>1000) { durantion=1000; } //利用Scroller类来来滑动==参数一二表示:开始移动的xy坐标,参数三四:表示水平和垂直移动的距离,参数五:移动的时间 mScroller.startScroll(getScrollX(), 0, dx, 0,durantion); //重新绘制 invalidate();}//当前没有移动完则继续移动@Overridepublic void computeScroll() { super.computeScroll(); if (mScroller.computeScrollOffset()) { //获取当前的移动X坐标 int currX = mScroller.getCurrX(); //继续移动完 scrollTo(currX, 0); //重新绘制 invalidate(); } else { //判断是否是向右边移动如果是且超过背景一半则解锁 if (isRight) { mListener.UnLock(); //重置状态 isRight=false; } }}//执行移动的距离private void performMove() { int dx=Math.round(mDownX-mMoveX); //界定边界--判断移动过程是否超过边界 if (-dx>getMeasuredWidth()-mBitmap.getWidth()) {//判断右边的边界 dx=mBitmap.getWidth()-getMeasuredWidth(); } else if (dx>0) {//判断左边的边界 dx=0; } scrollTo(dx, 0);//SroollTo是直接移动到设定的位置}OnUnLockListener mListener;//定义一个成员的变量:mListenerpublic void setOnUnLockListener(OnUnLockListener listener){ mListener=listener;//通过MainActivity传过来的参数 }//创建一个接口回调public interface OnUnLockListener{ public void UnLock(); }}
标签:
相关推荐:
- []SrollToollBy和rollTo有什么区别?SrollToollBy和rollTo的区别:每日关注
- []环球快看点丨红米手机开发版怎么样?红米手机如何获得Root权限?
- []linux下如何配置一个ip地址?linux怎么抓包?:全球头条
- []焦点精选!安装成功桌面上却找不到图标怎么办?软件下载及安装教程
- []如何查看chromebook刷机辅助功能?Chromebook辅助功能指南
- []如何判断iPhone是否存在浸液损坏?iPhone液触指示器位置-天天头条
- []迅雷快鸟家庭宽带提速的原理是什么?迅雷快鸟宽带提速的原理 天天观天下
- []环球实时:i7处理器好吗?电脑真的是i7要比i5好吗?
最新新闻:
- 歪歪如何设置热键?歪歪语音热键设置方法-环球简讯
- 焦点精选!安装成功桌面上却找不到图标怎么办?软件下载及安装教程
- 全球微资讯!黑苹果怎么安装驱动显卡?黑苹果驱动显卡的两种方案推荐
- 环球快看点丨红米手机开发版怎么样?红米手机如何获得Root权限?
- win11系统怎么下载安卓APP?安装安卓软件方法:焦点报道
- 如何利用fiddler监听手机APP的数据?fiddler安装与使用的雷电模拟器|天天精选
- 天天观焦点:什么是代理?java中的动态代理技术是什么?
- linux下如何配置一个ip地址?linux怎么抓包?:全球头条
- 保密文件柜是什么?保密柜与保险柜有什么区别?
- 迅雷快鸟家庭宽带提速的原理是什么?迅雷快鸟宽带提速的原理 天天观天下
- 环球焦点!mysql中的死锁如何优化?mysql之锁优化
- 如何查看chromebook刷机辅助功能?Chromebook辅助功能指南
- 如何判断iPhone是否存在浸液损坏?iPhone液触指示器位置-天天头条
- 厨房灶具有哪些品牌?厨房灶具十大品牌推荐
- 全球看点:教你如何一键刷机?蘑菇云刷机视频详细教程
- 苹果助手哪个好?苹果助手推荐_当前讯息
- 如何用手机qq发邮件?用手机qq发邮件的方法步骤-环球微资讯
- 免费个人网站怎么建立?个人网站建立流程
- SrollToollBy和rollTo有什么区别?SrollToollBy和rollTo的区别:每日关注
- 如何在linux下进行路由器限速?教你用linux做路由器限速
- 环球实时:i7处理器好吗?电脑真的是i7要比i5好吗?
- Win10无线总是掉线怎么回事?设置2个地方即可解决
- 【环球新要闻】雅本化学04月12日获深股通增持5.79万股
- 智能ABC怎么用?智能ABC的实用输入技巧 世界滚动
- 摩托罗拉edge s怎么设置铃声?摩托罗拉edge s怎么静音?|环球滚动
- 世界报道:东菱电烤箱好不好?东菱电烤箱牌子介绍
- 解析力碾压iPhone 14 Pro Max!小米13 Ultra手机镜头绝了:世界热点
- 环球热推荐:入门游戏鼠标 G102不到百元
- 苹果智能戒指要来了?大量技术专利曝光,动动手就能实现隔空交互 环球滚动
- 家庭布线 磊科5口千兆交换机29元|环球资讯
- 环球今头条!郭明琪:iPhone15 Pro和PM将继续实体按键
- 蔚来再砍新车免费权益,取消免费家充桩,并调整免费换电次数|快讯
- 《红霞岛》主机首发仅有质量模式:XSX支持4K30FPS
- 《CS:GO》主播直播时天花板塌了 直播效果拉满 世界资讯
- 携热管理新品亮相2023上海车展 美的威灵汽车部件“强链”中国新能源汽车
- 数论知识点总结_关于数论的一些基础知识
- 《王者荣耀》新英雄姬小满技能演示:主打一个背口诀 天天实时
- 杨幂新剧《哈尔滨1944》开机路透照 大波浪配皮风衣_天天快讯
- RTX 4070零售价4799元起 Remix Runtime开源《反恐精英2》支持NVIDIA Reflex 环球简讯
- 颜值爆表性能超3080!AX电竞叛客RTX4070 X3W OC首发
- 全球快资讯:集齐五虎上将召唤冰龙!映众RTX4070全系首发
- 极客武装!七彩虹iGame GeForce RTX 4070系列显卡齐亮相
- 焦点快报!点燃新战场 铭瑄GeForce RTX 4070同步发布
- RTX 4070显卡正式发布:4799元起 众多非公版本周发布 世界快消息
- 女子疯狂网上购物确诊帕金森:过度伤害性冲动行为
- 《三位一体5》公布首支预告!预计将于今年夏季发售
- 世界热门:华为畅享60X外观公布:神似Mate 50!
- 小米13 Ultra官宣18日发布 12s Ultra现4999清仓 看热讯
- 当前热讯:AMD:显卡的显存容量和性能同样重要
- 《生化》三女主都未变老引热议 网友:全感染了病毒
- 安卓新功能可实现APP自动存档,再也不用担心手机空间不够
- 古越龙山(600059.SH)发布2022年度业绩,净利润2.02亿元,同比增长0.7%,拟10派0.8元 全球讯息
- 世界热门:比《暗黑破坏神4》还多!暴雪新作《奥德赛》招聘职位高达59个
- 卷起来了!已有人2小时内速通《生化危机4:重制版》最高难度
- 破坏游戏体验!《守望先锋2》新英雄可用来坑队友_热推荐
- 宝可梦卡牌高价引发多起盗案 盗匪与时俱进好偷还贵_每日动态
- 今日热文:羡煞众人!男子年会抽中365天带薪休假奖:可折现
- 试用期员工因没跑完5公里被辞 公司:没有吃苦耐劳精神
- 汇聚生态之力,英特尔以网络与边缘技术连结可持续数字化未来:焦点信息
- 英特尔携生态伙伴推进技术创新深化,助数据中心可持续发展
- 天天热推荐:京东3C数码商家交流暨招商会在深圳圆满举行 携手商家共创增长
- 电脑电源,不止插拔那么简单
- 当前要闻:你电脑里的这个板子,其实是一座“矿山”
- 英维克:公司已在互动易“公司声音”公布上月底的股东户数,您可前往了解相关信息
- 天天日报丨三上真司离职后还在宣传:恭喜《幽灵线:东京》更新发布
- 即时:东方游戏文化周开启 多款游戏低价优惠
- 首批名单公布!赣州这些药店纳入职工门诊统筹_视点
- 【天天新视野】无法克服技术难题!iPhone15或将取消固态按键设计
- XSX版《幽灵线:东京》M站84分 值得重玩一遍!
- 动态焦点:COD19新赛季中文预告:人气角色登场 系列神枪回归
- NASA公开火星生活设施 6月开启完全火星模拟实验_全球报资讯
- 《异形:火力精英》将于4月26日推出Switch云版本
- Xbox手柄定制服务推出精英手柄二代定制 更多颜色可选-环球速读
- 发售一年后 《幽灵线:东京》确认添加D加密:看点
- 生化危机4重制版佣兵模式怎么解锁?生化危机4佣兵模式在哪开?