Android 图片滑块解锁 and 组件拖动解锁的简单实现

###效果图

这里写图片描述

###实现方式

####滑块解锁

自定义ImageView  在原图的基础上再画两个 滑块 一个目标位 一个移动位。
通过一个对外方法可以更改进度 然后 调用postInvalidate() 实现该效果  
大致原理就是这样  下面上代码
package project.com.verifyproject;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;

/**
 * Created by 于德海 on 2018/6/7.
 * 
 * email : yudehai0204@163.com
 *
 * @describe
 */

public class SlideValidateView extends AppCompatImageView {
    //Image背景图
    private Bitmap mBitmap;
    //滑块对应的画笔
    private Paint mPaint;
    //滑块的宽度占比  高度自动对比
    private float mSlideWidthScale;
    //滑块的源图
    private Bitmap mResourseBitmap;
    //滑块图片
    private Bitmap mSlideBitmap;
    //滑块的宽度
    private int mSlide_width = 0;
    //滑块高度
    private int mSlide_height=0;
    //是否重新绘制图片
    private boolean isReset = true;
    //偏移值  最小2 最大100
    private int deviation;
    //阴影颜色
    private int shade_color= Color.GRAY;
    //阴影图片
    private Bitmap mShadeBitmap;
    //图片的最大宽度,最大高度
    private int max_width,max_height;
    //滑块移动距离
    private int mSlideMoveDistance =0;
    //随机生成的目标阴影xy初始坐标
    private int mShadeRandom_x,mShadeRandom_y;
    private OnSlideListener mListener;
    public interface OnSlideListener{
        void success();
        void error();

    }


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

    public SlideValidateView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public SlideValidateView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray ta = context.obtainStyledAttributes(R.styleable
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫的于

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值