-
大小: 35KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-07
- 語(yǔ)言: Java
- 標(biāo)簽:
資源簡(jiǎn)介
詳細(xì)博文請(qǐng)看:http://blog.csdn.net/abren32/article/details/48683625

代碼片段和文件信息
package?com.jerry.testproject.widget.lockview;
import?android.content.Context;
import?android.graphics.Bitmap;
import?android.graphics.BitmapFactory;
import?android.graphics.Canvas;
import?android.graphics.Color;
import?android.graphics.Paint;
import?android.util.AttributeSet;
import?android.view.MotionEvent;
import?android.view.View;
import?com.jerry.testproject.R;
import?java.util.ArrayList;
import?java.util.List;
/**
?*?九宮格解鎖控件
?*?Created?by?Jerry?on?2015/9/21.
?*/
public?class?LockView?extends?View?{
????private?Bitmap?mNormalBitmap;
????private?Bitmap?mPressBitmap;
????private?Bitmap?mErrorBitmap;
????private?float?mPointRadius;
????//?手指在屏幕上的位置
????private?float?mX?mY;
????//?標(biāo)記當(dāng)前是否在繪制狀態(tài)
????private?boolean?isDraw?=?false;
????//?三種狀態(tài)下的畫(huà)筆
????private?Paint?mPaint?mPressPaint?mErrorPaint;
????//?九個(gè)點(diǎn)
????private?Point[][]?mPoints?=?new?Point[3][3];
????//?被選中的點(diǎn)
????private?List?mSelectedPoints?=?new?ArrayList<>();
????//?繪制正確的點(diǎn)位置
????private?List?mPassPositions?=?new?ArrayList<>();
????private?OnDrawFinishedListener?mListener;
????public?LockView(Context?context)?{
????????this(context?null);
????}
????public?LockView(Context?context?AttributeSet?attrs)?{
????????this(context?attrs?0);
????}
????public?LockView(Context?context?AttributeSet?attrs?int?defstyleAttr)?{
????????super(context?attrs?defstyleAttr);
????}
????@Override
????protected?void?onSizeChanged(int?w?int?h?int?oldw?int?oldh)?{
????????super.onSizeChanged(w?h?oldw?oldh);
????????init();
????}
????@Override
????protected?void?onDraw(Canvas?canvas)?{
????????//?繪制點(diǎn)
????????drawPoints(canvas);
????????//?繪制連線(xiàn)
????????drawLines(canvas);
????}
????private?void?init()?{
????????mPaint?=?new?Paint(Paint.ANTI_ALIAS_FLAG);
????????mPressPaint?=?new?Paint(Paint.ANTI_ALIAS_FLAG);
????????mErrorPaint?=?new?Paint(Paint.ANTI_ALIAS_FLAG);
????????//?按下?tīng)顟B(tài)的畫(huà)筆
????????mPressPaint.setColor(Color.parseColor(“#00B7EE“));
????????mPressPaint.setStrokeWidth(7);
????????//?錯(cuò)誤狀態(tài)的畫(huà)筆
????????mErrorPaint.setColor(Color.parseColor(“#FB0C13“));
????????mErrorPaint.setStrokeWidth(7);
????????//?加載三種狀態(tài)圖片
????????mNormalBitmap?=?BitmapFactory.decodeResource(getResources()?R.drawable.lock_point_normal);
????????mPressBitmap?=?BitmapFactory.decodeResource(getResources()?R.drawable.lock_point_press);
????????mErrorBitmap?=?BitmapFactory.decodeResource(getResources()?R.drawable.lock_point_error);
????????mPointRadius?=?mNormalBitmap.getWidth()?/?2;
????????//?當(dāng)前視圖的大小
????????int?width?=?getWidth();
????????int?height?=?getHeight();
????????//?九宮格點(diǎn)的偏移量
????????int?offSet?=?Math.abs(width?-?height)?/?2;
????????//?x、y軸上的偏移量
????????int?offSetX?=?0?offSetY?=?0;
????????int?pointItemWidth?=?0;?//?每個(gè)點(diǎn)所占用方格的寬度
????????if?(width?>?height){?//?橫屏的時(shí)候
????????????offSetX?=?offSet;
????????????offSetY?=?0;
????????????pointItemWidth?=?height?/?4;
????????}
????????if?
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????10016??2015-09-23?17:14??lockview\LockView.java
?????文件??????11117??2015-09-21?15:25??lockview\lock_point_error.png
?????文件??????11713??2015-09-21?15:24??lockview\lock_point_normal.png
?????文件??????10429??2015-09-21?15:25??lockview\lock_point_press.png
?????文件????????651??2015-09-23?16:35??lockview\Point.java
?????目錄??????????0??2015-09-23?17:56??lockview
-----------?---------??----------?-----??----
????????????????43926????????????????????6
評(píng)論
共有 條評(píng)論