Android 新手指引界面("我知道了"界
2017-03-09 本文已影响804人
小默森
大家好,我是森森.
很多人留言给我说,别老讲这么简单的,没用的,讲点实用的,其实我水平本来就不高,这次给大家分享一下,最近做的新手指引界面吧.
其实我什么都不会,那天我们出去玩,碰到朋友带孩子在玩,我说,来,给叔叔表演个节目,他腼腆的说,我什么都不会.朋友说,勇敢点,自信点.孩子大声说:老子不会.
废话不多说,先上图.




我做的是,新手指淫,一共有四个按钮,点击我知道了就自动导入下一个按钮.
在项目里边,Build.gradle的
dependencies {
compile 'com.isanwenyu.highlight:highlight:1.5.1'
}
代码如下:
public void showNextKnownTipView() {
mHightLight = new HighLight(MainActivity.this)//
.autoRemove(false)//设置背景点击高亮布局自动移除为false 默认为true
.intercept(false)//设置拦截属性为false 高亮布局不影响后面布局的滑动效果
.intercept(true)//拦截属性默认为true 使下方callback生效
.enableNext()//开启next模式并通过show方法显示 然后通过调用next()方法切换到下一个提示布局,直到移除自身
.setClickCallback(new HighLight.OnClickCallback() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "clicked and remove HightLight view by yourself", Toast.LENGTH_SHORT).show();
//remove(null);
}
})
.anchor(findViewById(R.id.id_container))//如果是Activity上增加引导层,不需要设置anchor,container为根布局id,按钮1,是在右边,长方形
.addHighLight(R.id.btn_click_one,R.layout.info_known,new OnRightPosCallback(45),new RectLightShape())
.addHighLight(R.id.btn_click_two,R.layout.info_known,new OnRightPosCallback(5),new BaseLightShape(5,5) {
@Override
protected void resetRectF4Shape(RectF viewPosInfoRectF, float dx, float dy) {
//缩小高亮控件范围,按钮二是自定义图形.
viewPosInfoRectF.inset(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dx,getResources().getDisplayMetrics()), TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dy,getResources().getDisplayMetrics()));
}
@Override
protected void drawShape(Bitmap bitmap, HighLight.ViewPosInfo viewPosInfo) {
//custom your hight light shape 自定义高亮形状
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setDither(true);
paint.setAntiAlias(true);
paint.setMaskFilter(new BlurMaskFilter(15, BlurMaskFilter.Blur.SOLID));
RectF rectF = viewPosInfo.rectF;
canvas.drawOval(rectF, paint);
}
})
.addHighLight(R.id.btn_click_three,R.layout.info_known,new OnTopPosCallback(),new CircleLightShape())
.addHighLight(R.id.btn_click_four,R.layout.info_known,new OnBottomPosCallback(10),new RectLightShape())
.setOnRemoveCallback(new HighLightInterface.OnRemoveCallback() {//监听移除回调 intercept为true时生效,按钮三是在按钮顶部,圆形高亮
@Override
public void onRemove() {
Toast.makeText(MainActivity.this, "The HightLight view has been removed", Toast.LENGTH_SHORT).show();
}
})
.setOnShowCallback(new HighLightInterface.OnShowCallback() {//监听显示回调 intercept为true时生效
@Override
public void onShow() {
Toast.makeText(MainActivity.this, "The HightLight view has been shown", Toast.LENGTH_SHORT).show();
}
});
mHightLight.show();
}
/**
* 响应所有R.id.iv_known的控件的点击事件
* <p>
* 移除高亮布局
* </p>
*
* @param view
*/
public void clickKnown(View view) {
if(mHightLight.isShowing() && mHightLight.isNext()){//如果开启next模式
mHightLight.next();
}else{
remove(null);
}
}
public void remove(View view){
mHightLight.remove();
}
进入页面,直接调用本方法,不能高亮提示,必须等布局都加载完毕才行,因此要在oncreate方法里这样写:
View cv = getWindow().getDecorView();
cv.post(new Runnable() {
@Override
public void run() {
showNextTipView();
}
});
如有错误,欢迎指出,QQ 525902456.
欢迎大神来喷
喜欢诗词和旅行还有装逼的小伙伴可以关注我的公众号
