最最轻量级的新手引导库

项目介绍:

最最轻量级的新手引导库,能够快速为任何一个View创建一个遮罩层,支持单个页面,多个引导提示,支持为高亮区域设置不同的图形,支持引导动画,方便扩展,良好支持fragment

    • 本系统能够快速的为一个Activity里的任何一个View控件创建一个遮罩式的导航页。
    • 工作原理
    • 首先它需要一个目标View或者它的id,我们通过findViewById来得到这个View,计算它在屏幕上的区域targetRect,通过这个区域,开始绘制一个覆盖整个Activity的遮罩,可以定义遮罩的颜色和透明度,然而目标View被绘制成透明从而实现高亮的效果。接下来是在相对于这个targetRect的区域绘制一些图片或者文字。我们把这样一张图片或者文字抽象成一个Component接口,设置文字或者图片,所有的图片文字都是相对于targetRect来定义的。可以设定额外的x,y偏移量,可以对遮罩系统设置可见状态的发生变化时的监听回调,可以对遮罩系统设置开始和结束时的动画效,另外,我们可以不对整个Activity覆盖遮罩,而是对某一个View覆盖遮罩。
    • 注意:具体用法参见demo,内附详细注释
    • usage

      public class SimpleComponent implements Component {
      
         @Override
         public View getView(LayoutInflater inflater) {
              LinearLayout ll = new LinearLayout(inflater.getContext());
              LinearLayout.LayoutParams param =
                      new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
              ll.setOrientation(LinearLayout.VERTICAL);
              ll.setLayoutParams(param);
              TextView textView = new TextView(inflater.getContext());
              textView.setText(R.string.welcome);
              textView.setTextColor(inflater.getContext().getResources().getColor(R.color.color_white));
              textView.setTextSize(20);
              ImageView imageView = new ImageView(inflater.getContext());
              imageView.setImageResource(R.mipmap.arrow);
              ll.removeAllViews();
              ll.addView(textView);
              ll.addView(imageView);
              ll.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      Toast.makeText(view.getContext(), "引导层被点击了", Toast.LENGTH_SHORT).show();
      
                  }
              });
              return ll;
         }
      
             @Override
             public int getAnchor() {
                  return Component.ANCHOR_BOTTOM;
             }
      
             @Override
             public int getFitPosition() {
                  return Component.FIT_START;
             }
      
             @Override
             public int getXOffset() {
                  return 30;
             }
      
             @Override
             public int getYOffset() {
                  return 0;
             }
         }
      
      public void showGuideView() {
          final GuideBuilder builder1 = new GuideBuilder();
          builder1.setTargetView(button1)
                  .setAlpha(150)
                  .setOverlayTarget(true)//设置目标区域是否高亮显示
                  .setOutsideTouchable(false);
          builder1.setOnVisibilityChangedListener(new GuideBuilder.OnVisibilityChangedListener() {
              @Override
              public void onShown() {
                  //  Toast.makeText(MutiGuideViewActivity.this, "show", Toast.LENGTH_SHORT).show();
                  }
              @Override
              public void onDismiss() {
                  button2.post(new Runnable() {
                      @Override
                      public void run() {
                          showGuideView2();
                      }
                  });
                  // Toast.makeText(MutiGuideViewActivity.this, "dismiss", Toast.LENGTH_SHORT).show();
              }
          });
      
          builder1.addComponent(new SimpleComponent());
          Guide guide = builder1.createGuide();
          guide.setShouldCheckLocInWindow(false);
          guide.show(MutiGuideViewActivity.this);
      }
      
时间: 2024-10-25 14:58:57

最最轻量级的新手引导库的相关文章

zBase --轻量级DOM操作库

项目地址:ZengTianShengZ-github zBase-1.2.0 --v3 修复部分bug,添加AMD规范测试 zBase-1.1.0 --v2 对 v1 版本做了升级,优化DOM查找,简化API,提高代码可读性,支持模块化 支持 AMD & CommonJS zBase-1.0.0 --v1 没有任何依赖 轻量级的Dom操作库,封装一些常用的css选择器和事件操作等 Quick start $ npm install $ gulp scripts 使用npm安装 zBase: $

python中的轻量级定时任务调度库:schedule

提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中.不过,一个小的定时脚本,要用celery的话太“重”了.所以,我找到了一个轻量级的定时任务调度的库:schedule. 库的安装还是最简单的pip install schedule,使用起来也是很容易理解的.我们从最简单的栗子看起: import schedule import time def job(): print("I'm working...") schedule.every(10)

【华为云技术分享】小白篇,认识Python最最最常用语重要的库Requests

Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它. 下面我们来认识这个库 Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它. 下面我们来认识这个库 1 import requests 2 url = 'http://www.baidu.com' 3 r = requests.get(url) 4 print type(r) 5 print r.status_code 6 print r.encoding 7 #print r.c

轻量级协程库C语言实现

仿制云风的协程库的接口设计,我花了一个下午加晚上的时间重构了之前写的协程库,提供的接口现在和云风大大的协程接口一模一样,都是仿制lua的非对称协程.我们依旧没有用ucontext.h组件(用ucontext.h组件实现协程的文章铺天盖地,可以自行寻找,用longjmp实现就少很多,用内联汇编实现的就更少了),我们的协程库可以运行在兼容X86平台的操作系统上,各种unix-like操作系统,windows操作系统都可以,不过得用gcc或者clang或者与之兼容的mingw编译工具编译出32位的程序

iOS 轻量级安全第三方库 SSKeychain

SSKeychain  这个库是对iOS安全框架的封装,使用起来极其简单. git:https://github.com/samsoffes/sskeychain 这里贴下使用代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [SSKeychain setPassword:@"123" forSer

iOS轻量级网络请求库----NetWorkingHTTP

NetWorkingHTTP使用方法: 1.在需要用到的头文件中引入NetWorkingHTTP和Reachability 2.使用需要的方法:post或者是get方法 3.具体使用方法如下 /**get获取json字符串*/ -(void)buttonClick{ NSString *url = @"http://api.k780.com:88/?app=weather.future&weaid=1&&appkey=10003&sign=b59bc3ef6191

Dapper一个轻量级的ORM库

相关阅读 http://stackexchange.github.io/dapper-dot-net/ https://github.com/StackExchange/dapper-dot-net https://msdn.microsoft.com/zh-cn/magazine/mt703432.aspx 引用 可以直接通过Nuget下载,需要源码的话可以通过git去下载,上面已经给出链接 基本操作 简单的定义了一张mssql数据表 private static List<Student>

非常有用的GitHub链接

平常开发工作中,我经常取Github上搜索项目,Clone下来学习使用,在这个过程中,发现了好多比较好的Github地址,记录下来,分享出去. image 非常有用的GitHub链接(顺序不分先后): 1. https://github.com/jeasonlzy: OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比Retrofit更简单易用. 完全仿微信的图片选择,并且提供了多种图片加载接口,选择图片后可以旋转,可以裁剪成矩形或圆形,可以配置各种其他的参数

C/C++框架和库 (真的很强大) 转

http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali