引导全集

分类:
新功能(全屏幕引导,局部引导,镂空引导)
新版用户 laucher引导

⚠️ 注意:不可以采用1张全屏切图,会被拉伸变形(切小图在xml中展示效果更佳 或者使用fresco放大缩小切图的局部适应整个屏幕被拉

新版用户 laucher引导
  建议采用ViewStub实现
如果分多个阶段,可以参考这样实现:

如果View设置为gone:  It does consume less resources because it does not need to call   onMeasure()  or  onDraw() It is GONE in terms of what is shown on the screen, bu t it still has a memory mapping in R.java。so it still consumes memory but it does not need to draw the animation and/or consume CPU resources. 大概意思是仍然占用内存
选择ViewStub,不占用内存

新版用户 laucher引导,源码中采用自定义View(PhoneGuideView ),可滑动切换引导页面,可采用HorizontalScrollView实现,并附带原点切换
⚠️ 1 为了适配不同的屏幕,这里根据不同的屏幕重新设置dot9图片不同的尺寸大小。 使用的每个 view,都必须先调用  adjustView  方法来先适配屏幕
2 statusbar 和 navigationbar需要隐藏
隐藏方法源代码
View decorView = getWindow().getDecorView();// Hide the status bar,Navigation bar,Actionbar.int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);

网上解决方案是: http://www.cnblogs.com/-cyb/articles/Android_ViewPage_Guide.html
啪啪X采用的方案:启动单独半透明的SplashActivity,使用Viewpager管理所有的页面

新功能
1 全屏引导
1、设置单独半透明的SplashActivity
2、设置搞个半透明遮罩的图片隐藏在布局文件中,通过显示和隐藏引导图片实现引导功能。
3、stub View + PhoneGuideView
4、采用Dialog实现,科普文章: http://www.cnblogs.com/loulijun/archive/2013/04/09/3010318.html
5、 采用PopUpWindow实现 (实战采用,操作简单,便于管理维护)
6 、GuideBuilder.build模式 (推荐使用 )

2 局部引导解决方案
引导全集_第1张图片

实战中如果在xml中某个控件周围某个方向上展示引导,推荐使用PopWindow。方式1和方法2区别:

源代码:
方式1 使用popup_window,showAsDropDown、showAsLocation (获取activity页面焦点)
popupWindow = new PopupWindow(popupLayout,ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupLayout.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int popupWidth = popupLayout.getMeasuredWidth();
int popupHeight = popupLayout.getMeasuredHeight();

方式2 Builder模式 (不获取activity页面焦点)

GuideBuilder.build(mActivity)
       .setTargetView(pp_video_circle_top_play)
        .setContentView(textView)
        .setGravity(GuideBuilder.GUIDE_BELOW)
        .setCenter(true)
       .setMarginTop(ViewUtils.dp2px(mActivity, 
       .setDuration(3000)
       .show();

1、xml引导父布局设置为半透明的背景色。
2、小图标引导,为了节省包大小,改变半透明背景的子View位置
api
箭头控制  hasArrowUp() hasArrowDown()
箭头位置 setArrowMarginLeft() setArrowMarginRight() //右对齐 setArrowCenter() //居中
形象控制 hasPPLeft() hasPPRiht()
居中控制 setCenter( true ) //设置居中时箭头和目标View中间对齐
本方法的优点 上下箭头可动态控制 ,中间图可灵活处理,左右上下图像可灵活移动

镂空引导
解释:包围控件A实现某个引导
引导全集_第2张图片
方法1: UI切图,漏出头顶,位置不准确
方法2:自定义View,view.getLocationOnScreen()获取高亮布局的文字,100%准确率。

部分内容参考至 -Android 快速实现新手引导层的库 https://github.com/huburt-Hu/NewbieGuide
canvas.saveLayer(0, 0, 1000, 1000, null,
Canvas.MATRIX_SAVE_FLAG |
Canvas.CLIP_SAVE_FLAG |
Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
Canvas.CLIP_TO_LAYER_SAVE_FLAG);
设置透明镂空引导浮层1:
//paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));

设置引导浮层2:
canvas.drawBitmap(mBackGroundBitmap, 0, 0, paint)
PorterDuffXfermode xfermode = newPorterDuffXfermode(PorterDuff.Mode.CLEAR)
PorterDuffXfermode类绘制出来一个透明空洞有两种mode: XOR CLEAR

附录:
引导全集_第3张图片


你可能感兴趣的:(引导全集)