###效果图
###实现方式
####滑块解锁
自定义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