Androidの前のスキャンボックススタイルの初心者ガイドライブラリ


出典:炎の鎧csdnブログ:http://blog.csdn.net/totond 炎の鎧メールボックス:[email protected]この文章はオリジナルです.転載はこの出所を明記してください.
概要
Githubアドレス:https://github.com/totond/YGuider これはスキャンフレームスタイルの初心者ガイドです.効果は上の図のようです.
使用
Grade
(アップロードしたばかりの0.9.2バージョンは数時間待つかもしれません)
compile 'com.yanzhikaijky:YGuider:0.9.2'
サポート機能
  • は現在、一時的に1つの走査枠だけのガイド(マルチスキャンフレームの設計)
  • をサポートしています.
  • が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);
    
    なお、上記の追加動作を実行した後は、YGuiderがターゲットView位置属性を取得するためにprepare()が必要となる.
    
        /**
         *   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);
    Typer TextViewについて
    このプロシージャはTextViewを再生します.hanks-zyhのHTextViewから書き換えたTyper TextViewです.これらの属性以外にも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がそのサブクラスを実現すると、いくつかのコールバック方法を選択的に書き換えられます.
        /**
         *       
         * @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);
        }
    後続
    YGuider原理分析は途中で行われていますが、YGuiderが複数のスキャンフレームを使えるように設計されています.ここで意見と提案をお願いします.よろしくお願いします.
    著作権
    Typer TextView
    YGuiderで使われている文字の一つ一つに現れるコントロールは、hanks-zyhのHText Viewの中から書き換えたTyper TextViewです.私がたくさん変えられましたが、ここで説明します.
    オープンソースプロトコル
    YGuiderはApache 2.0プロトコルに従います.