Android上一個掃描框風格的新手引導庫,android新手

來源:互聯網
上載者:User

Android上一個掃描框風格的新手引導庫,android新手

簡介

  這是一個掃描框風格的新手引導,效果如。

使用Gradle
compile 'com.yanzhikaijky:YGuider:0.9.2'
支援特性
  • 目前暫時只支援一個掃描框的引導(多掃描框的在設計)
  • 傳入View對象就會根據它的位置資訊產生座標地區,儲存在目的地區域中。(所以View對象傳入之後位置有更變的,請在startGuide()前重新調用prepare()
  • 傳入區域座標矩形(left,top,right,bottom)也可以設定目標。
  • 可以自訂彈窗布局。
  • 可以自訂畫掃描框的畫筆

    具體的詳細操作方法可以查看Wiki

使用方法Demo使用

  Demo裡面已經包含了使用YGuider的各種姿勢,不過有一些注釋掉而已,歡迎Fork來體驗。^_^

簡單使用

  需要傳入Activity對象來建立YGuider,然後加入想要被“掃描”的目標,最後調用prepare()方法就可以了完成準備了:

        mYGuider = new YGuider(this);        mYGuider.addNextTarget(new RectF(70, 70, 170, 170), "點擊這裡可以立刻出現所有提示文字,大家好,我是YGuider!", 90, 0);        mYGuider.addNextTarget(btn1, "這裡是根據傳入View來確定的地區!", 150, 10);        mYGuider.addNextTarget(new RectF(50, 500, 150, 650), "這裡是根據傳入矩形地區座標來確定的!", 100, 10);        mYGuider.addNextTarget(                        btn2, "通過設定位移量來控制PopupWindow出現的位置,還可以設定它的大小!"                        , -350, -350                        , 430, ViewGroup.LayoutParams.WRAP_CONTENT);        mYGuider.addNextTarget(                        new RectF(500, 200, 600, 270), "可以動態改變兩個按鈕的文字",                        -350, 50                        , 300, ViewGroup.LayoutParams.WRAP_CONTENT                        , "", "Finish");        mYGuider.prepare();

  最後在需要調用的時候,使用startGuide()方法開始新手引導:

                mYGuider.startGuide();
方法介紹

  由於方法過多,放在這裡太佔地方,所以請移步Wiki查看各個方法的使用。

關於設定目標的方法
    /**     * 增加一個掃描地區     * @param targetView 目標View     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     */    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY);    /**     * 增加一個掃描地區     * @param targetView 目標View     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     * @param wWidth 快顯視窗的寬度     * @param wHeight 快顯視窗的高度     */    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight);    /**     * 增加一個掃描地區     * @param targetView 目標View     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     * @param wWidth 快顯視窗的寬度     * @param wHeight 快顯視窗的高度     * @param jumpText 跳過選項的文字     * @param nextText 下一步選項的文字     */    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight, String jumpText, String nextText);    /**     * 增加一個掃描地區     * @param targetRegion 目的地區域的座標矩陣     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     */    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY);    /**     * 增加一個掃描地區     * @param targetRegion 目的地區域的座標矩陣     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     * @param wWidth 快顯視窗的寬度     * @param wHeight 快顯視窗的高度     */    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight);    /**     * 增加一個掃描地區     * @param targetRegion 目的地區域的座標矩陣     * @param text 解說文字     * @param wOffsetX 快顯視窗的X位置位移量(初始位置為目標View中間)     * @param wOffsetY 快顯視窗的Y位置位移量(初始位置為目標View正下方)     * @param wWidth 快顯視窗的寬度     * @param wHeight 快顯視窗的高度     * @param jumpText 跳過選項的文字     * @param nextText 下一步選項的文字     */    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight, String jumpText, String nextText);    /**     * 增加一些Target     * @param targets 一些ScanTarget對象     */    public void addTarget(ScanTarget... targets);

  注意,執行完上面的增加操作之後需要prepare(),才能讓YGuider獲得目標View位置屬性。

    /**     * 開始Guide     */    public void startGuide();    /**     * 進入下一個引導     */    public void startNextGuide();    /**     * 退出新手引導     */    public void cancelGuide();    /**     * 移除目標     * @param index 目標的index     * @return 移除目標成功與否     */    public boolean removeTarget(int index);    /**     * 清除所有掃描目標     */    public void clearTargets();    /**     * 判斷在當前ContentView是否已經初始化寬高屬性     * 如果是,則直接擷取目標View的位置資訊,寫入目標列表     * 如果不是,則等到ContentView初始化寬高屬性之後再擷取     */    public void prepare();
設定自訂屬性的方法

  這些方法用於設定一些YGuider本身已有預設值的屬性,替換

    /**     * 設定掃描框動畫重新整理的時間間隔,預設值是20     * @param refreshTime 單位是ms     */    public void setMaskRefreshTime(int refreshTime);    /**     * 設定掃描框移動動畫的期間,預設值是500     * @param moveDuration 單位是ms     */    public void setMaskMoveDuration(int moveDuration);    /**     * 設定掃描框擴大動畫的期間,預設值是500     * @param expandDuration 單位是ms     */    public void setExpandDuration(int expandDuration);    /**     * 設定遮罩層的顏色,最後是設定成透明的,預設顏色是#aa222222     * @param color 顏色     */    public void setMaskColor(@ColorInt int color);    /**     * 設定畫掃描框的畫筆     * @param paint 畫筆     */    public void setMaskPaint(Paint paint);    /**     * 設定彈窗裡面TextView文字出現的速度,預設值是100     * @param refreshTime 每次增加文字的時間間隔,單位ms     */    public void setWindowTyperRefreshTime(int refreshTime);    /**     * 彈窗裡面解說文字的字型大小,預設值是18sp     * @param size 字型大小     */    public void setWindowTyperTextSize(int size);    /**     * 設定彈窗裡面TextView文字的增長速度,預設值是1     * @param increase 每次增加多少個字元     */    public void setWindowTyperIncrease(int increase);    /**     * 設定跳過按鈕的文字     * @param jumpText 跳過文字     */    public void setJumpText(String jumpText);    /**     * 設定下一步按鈕的文字     * @param nextText 下一步文字     */    public void setNextText(String nextText);    /**     * 設定彈窗背景     * @param idRes 背景DrawableId     */    public void setWindowBackground(@DrawableRes int idRes);    /**     * 設定跳過和下一步按鈕文字大小     * @param size 文字字型大小     */    public void setWindowJumpAndNextTextSize(int size);    /**     * 設定自訂彈窗布局     * 注意新的布局要有TyperTextView類,id設定為ttv_tips     * 跳過按鈕和下一步按鈕可以選擇實現,但是有的話id請分別設定為tv_jump和tv_next,其他可以自訂     * @param layouId 布局的id     */    public void setWindowContent(@LayoutRes int layouId);
關於TyperTextView

  這個逐字播放TextView是我改寫自hanks-zyh的HTextView裡面的TyperTextView,修改了不少東西,它是一個TextView,Text,TextSize和TextColor已經在代碼裡面寫了,除了這些屬性還是其他還是可以在xml檔案裡面定義的。

回調

  YGuider的回調分為狀態回調OnGuiderChangedListener和點擊回調OnGuiderClickListener

/** * YGuider狀態變化的回調 */public interface OnGuiderChangedListener {    /**     * 引導開始時候回調     */    void onGuiderStart();    /**     * 跳轉到下一個目標時候的回調     * @param nextIndex 下一個目標的index     */    void onGuiderNext(int nextIndex);    /**     * 引導完成之後的回調     */    void onGuiderFinished();}
/** * 各種點擊事件的回調 */public interface OnGuiderClickListener {    /**     * 當遮罩層空白處被點擊時候的回調     */    void onMaskClick();    /**     * 當下一步按鈕被點擊時的回調     * @param nextIndex 下一目標的index     */    void onNextClick(int nextIndex);    /**     * 當前高亮/掃描目的地區域被點擊時的回調     * @param index 當前目的地區域的index     */    void onTargetClick(int index);    /**     * 當跳過按鈕被點擊時的回調     */    void onJumpClick();}

  注意:這些都是介面,實現它們的話就必須重寫裡面的所有方法,所以這裡有一個繼承它們的抽象類別OnGuiderListener實現它的子類的話可以選擇性地重寫一些回調方法(這個設計參考了GestureDetector的SimpleOnGestureDetector),所以有下面設定回調的方法:

    /**     * 設定點擊回調     * @param guiderClickListener 可以傳入OnGuiderClickListener和OnGuiderListener的子類     */    public void setOnGuiderClickListener(OnGuiderClickListener guiderClickListener){        mMask.setOnGuiderClickListener(guiderClickListener);    }    /**     * 設定狀態回調     * @param onGuiderChangedListener 可以傳入OnGuiderChangedListener和OnGuiderListener的子類     */    public void setOnGuiderChangedListener(OnGuiderChangedListener onGuiderChangedListener){        mMask.setOnGuiderChangedListener(onGuiderChangedListener);    }    /**     * 設定狀態所有回調     * @param onGuiderListener 可以傳入OnGuiderListener的子類     */    public void setOnGuiderListener(OnGuiderListener onGuiderListener){        mMask.setOnGuiderListener(onGuiderListener);    }

源碼:http://www.jinhusns.com/Products/Download

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.