引导功能GuideView
GuideView源码仅有300余行代码;GuideView使用起来只需要4行代码。
效果
GuideVie源码
import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import static android.animation.ValueAnimator.REVERSE;
/**
* 引导图层
* Created by ZSC on 2017/7/11.
*/
public class GuideView extends View {
public View guideParent;
private Context context;
private float density;
public GuideView(Context context) {
super(context);
this.context = context;
initSourcePaint();
initBgPaint();
initGuidePaint();
initTextPaint();
setLayerType(View.LAYER_TYPE_SOFTWARE, null);//用到Xfermode时必要的设置
}
private int bgWidth;//背景宽
private int bgHeight;//背景高
private int guideX;//需要引导的view的x坐标
private int guideY;//需要引导的view的y坐标
private int guideWidth;//需要引导的view的宽
private int guideHeight;//需要引导的view的高
private void initSize() {
if (context instanceof Activity) {
DisplayMetrics dm = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm);
bgWidth = dm.widthPixels;//设置背景宽为屏幕宽
bgHeight = dm.heightPixels;//设置背景高为屏幕高
int[] location = new int[2];
guideParent.getLocationOnScreen(location);//得到需要引导的view在整个屏幕中的坐标
guideX = location[0];
guideY = location[1];
guideWidth = guideParent.getWidth();