一、效果展示:
这篇博客有解释大概的步骤:
https://blog.csdn.net/weixin_44614751/article/details/103101199
二、代码部分:
MainActivity.java中的代码:
package com.example.drawunlock1;import androidx.appcompat.app.AppCompatActivity;import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.media.Image;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebViewRenderProcess;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {RelativeLayout rl;ArrayList<ImageView> dotViews;DrawViewR drawView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rl = findViewById(R.id.rl_root);dotViews = new ArrayList<>();initNineDotView(R.drawable.normal,View.VISIBLE);initDrawView();initNineDotView(R.drawable.selected,View.INVISIBLE);drawView.setDotViews(dotViews);// System.out.println(dotViews);}private void initDrawView(){drawView = new DrawViewR(this);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);rl.addView(drawView, params);}@Overridepublic boolean onTouchEvent(MotionEvent event) {return true;}// 计算dp对应的像素值private float pixelFromDp(int size){// 获取屏幕密度return getResources().getDisplayMetrics().density * size;}private void initNineDotView(int res, int visible)