ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:17.19KB ,
资源ID:9434564      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9434564.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android滑动解锁控件.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android滑动解锁控件.docx

1、Android滑动解锁控件Android滑动解锁控件import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Rect;import android.os.Handler;import android.os.Message;import android.os.Vibrator;import android.util.AttributeSet;im

2、port android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.mosjoy.ad.R;public class SliderRelativeLayout extends RelativeLayout private static String TAG = SliderRelativ

3、eLayout;private TextView tv_slider_icon = null; / 初始控件,用来判断是否为拖动?private Bitmap dragBitmap = null; /拖拽图片private Context mContext = null; / 初始化图片拖拽时的Bitmap对象private Handler mainHandler = null; /与主Activity通信的Handler对象private ImageView mPhoneImageView;private ImageView mUnlockImageView;private ImageVie

4、w mMessageImageView;private ImageView mCameraImageView;private boolean mStopBoolean = false;private Canvas mCanvas;public SliderRelativeLayout(Context context) super(context); mContext = context; initDragBitmap();public SliderRelativeLayout(Context context, AttributeSet attrs) super(context, attrs,

5、0); mContext = context; initDragBitmap();public SliderRelativeLayout(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle); mContext = context; initDragBitmap();/ 初始化图片拖拽时的Bitmap对象private void initDragBitmap() if (dragBitmap = null) dragBitmap = BitmapFactory.decodeResou

6、rce(mContext.getResources(), R.drawable.getup_slider_ico_normal);Overrideprotected void onFinishInflate() super.onFinishInflate(); / 该控件主要判断是否处于滑动点击区域。滑动时 处于INVISIBLE(不可见)状态,滑动时处于VISIBLE(可见)状态 tv_slider_icon = (TextView) findViewById(R.id.slider_icon); mPhoneImageView = (ImageView) findViewById(R.id

7、.iv_phone); mUnlockImageView = (ImageView) findViewById(R.id.iv_unlock); mCameraImageView = (ImageView) findViewById(R.id.iv_camera); mMessageImageView = (ImageView) findViewById(R.id.iv_message);private int mLastMoveX = 1000; /当前bitmap应该绘制的地方 , 初始值为足够大,可以认为看不见private int mLastMoveY = 1000; /当前bitma

8、p应该绘制的地方 , 初始值为足够大,可以认为看不见public boolean onTouchEvent(MotionEvent event) int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction() case MotionEvent.ACTION_DOWN: mLastMoveX = (int) event.getX(); mLastMoveY = (int) event.getY(); /处理Action_Down事件: 判断是否点击了滑动区域 return handleAction

9、DownEvenet(event); case MotionEvent.ACTION_MOVE: mLastMoveX = x; /保存了X轴方向 mLastMoveY = y; invalidate(); /重新绘制 return true; case MotionEvent.ACTION_UP: /处理Action_Up事件: 判断是否解锁成功,成功则结束我们的Activity ;否则 ,缓慢回退该图片。 handleActionUpEvent(event); return true; return super.onTouchEvent(event);/ 绘制拖动时的图片Overridep

10、rotected void onDraw (Canvas canvas) super.onDraw(canvas); / 图片更随手势移动 if (!mStopBoolean) invalidateDragImg(canvas); mCanvas = canvas;/ 图片更随手势移动private void invalidateDragImg(Canvas canvas) /Log.e(TAG, handleActionUpEvenet : invalidateDragImg ); /以合适的坐标值绘制该图片 int drawXCor = mLastMoveX - dragBitmap.ge

11、tWidth()/2; int drawYCor = mLastMoveY - dragBitmap.getHeight()/2; canvas.drawBitmap(dragBitmap, drawXCor + mLastMoveX + distance - + distance ); if(distance = 0) mHandler.postDelayed(BackDragImgTask, BACK_DURATION); else /复原初始场景 resetViewState(); /暂停两秒private void adStopTwoSecond() mPhoneImageView.s

12、etVisibility(View.INVISIBLE); mUnlockImageView.setVisibility(View.INVISIBLE); mCameraImageView.setVisibility(View.INVISIBLE); mMessageImageView.setVisibility(View.INVISIBLE); / mCanvas.drawBitmap(dragBitmap, 2000, 2000, null); invalidate();/ try / Thread.sleep(2*1000);/ catch (InterruptedException e

13、) / e.printStackTrace();/ /重置初始的状态,显示tv_slider_icon图像,使bitmap不可见private void resetViewState() mLastMoveX = 1000; mLastMoveY = 1000; tv_slider_icon.setVisibility(View.VISIBLE); mPhoneImageView.setVisibility(View.INVISIBLE); mUnlockImageView.setVisibility(View.INVISIBLE); mCameraImageView.setVisibilit

14、y(View.INVISIBLE); mMessageImageView.setVisibility(View.INVISIBLE); invalidate(); /重绘最后一次/通过延时控制当前绘制bitmap的位置坐标private Runnable BackDragImgTask = new Runnable() public void run() /一下次Bitmap应该到达的坐标值 mLastMoveX = mLastMoveX - (int)(BACK_DURATION * VE_HORIZONTAL); invalidate();/重绘 /是否需要下一次动画 ? 到达了初始位置,

15、不在需要绘制 boolean shouldEnd = Math.abs(mLastMoveX - tv_slider_icon.getRight() = 8 ; if(!shouldEnd) mHandler.postDelayed(BackDragImgTask, BACK_DURATION); else /复原初始场景 resetViewState(); ;private Handler mHandler =new Handler () public void handleMessage(Message msg) ;/震动一下下咯private void virbate() Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(200);public void setMainHandler(Handler handler) mainHandler = handler;/activity所在的Handler对象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1