商城プロジェクト実戦|10.1 xUtils 3詳細紹介及びViewUtilsの使用方法

7324 ワード

本文は菜鳥の巣の作者劉婷の連載です.」ショッピングモールプロジェクト実戦」シリーズでは、「京東淘宝のショッピングモール」がどのように実現するかについて話します.140セットのAndroid優秀なオープンソースプロジェクトのソースコード、受領住所:http://mp.weixin.qq.com/s/afPGHqfdiApALZqHsXbw-A あるいは運営のお姉さん(微信id:BT 474849)を誘って無料で受け取ることを歓迎しますよ~
最初はGitHubの上にxUtilsという強力なオープンソースフレームワークが現れました.そこには実用的なandroidツールがたくさん含まれていて、大きなファイルのアップロードをサポートしています.より包括的なhttpリクエストプロトコルサポート(10種類の述語)があります.より柔軟なORMを持っています.より多くのことは注釈でサポートされ、混同の影響を受けません.このフレームワークの最低互換バージョンはandroid 2.2(api level 8)です..しかし、Androidバージョンの更新が進むにつれて、特にAndroid 6.0以降、xUtilsの互換性が悪くなったため、アップグレード版のxUtils、すなわちxUtils 3が登場した.
xUtils 3の詳細
xUtils 3はxUtilsのアップグレードバージョンで、orm、http(s)、image、view注記が含まれていますが、依然として軽量級(246 K)で、主に特性が強く、拡張が容易で、もちろん以前のxUtilsと比較して、xUtils 3では多くのAPIインタフェースが変更され、使い方も以前とは異なり、そこで本稿では,主に最新のxUtils 3の詳細な紹介と,このフレームワークの下のViewUtilsモジュールの最新の使い方を説明する.
1.xUtils 3の特性
1.1 xUtils 3の主な特性
xUtils 3の主な特性は以下の通りである.
  • 1.安定した基盤:AbsTaskと統一されたコールバックインタフェースCallback、いかなる異常も、あなたのコールバック方法が異常を実現してもonErrorに入り、いかなる場合でもonFinishedはいつもあなたに任務が終わったことを知らせます.
  • 2.効率的で安定したormツールに基づいて、httpモジュールは、domain、path、expiryなどの特性をサポートするクッキーとキャッシュ(Cache-control、Last-modified、ETagなどの特性をサポートする)のサポートをより容易に実現します.
  • 3.強力なhttpとそのダウンロードキャッシュのサポートがあり、imageモジュールの実現はかなり簡潔であり、viewが保有しているが、Mem Cacheによって削除された画像の回収をサポートし、ページのロールバック時の点滅を減少させる.
  • 4.View注記モジュールは400行以上のコードしかありませんが、複数のメソッドを持つlistenerのサポートを含む様々なView注入とイベントバインドを柔軟にサポートしています.

  • 1.2その他の特性
    xUtils 3のその他の特性.
  • 1.超大ファイル(2 Gを超える)のアップロードをサポートします.
  • 2.より包括的なhttpリクエストプロトコルサポート(11の述語)、xUtilsでは10の述語しかサポートされていません.
  • 3.より柔軟なORMを持ち、greenDaoと一貫したパフォーマンスを実現します.
  • 4.より多くのイベント注釈がサポートされ、混同の影響を受けません.
  • 5.ピクチャバインドはgif(システム互換性の影響で、一部のgifファイルは静的に表示するしかない)、webpをサポートし、フィレット、円形、四角形などの裁断をサポートし、自動回転をサポートする.
  • 6.3.5.0からlibwebpbackport.soは含まれません.Android 4.2以下のデバイスでwebpを互換化する必要がある場合は3.4.0バージョンを使用してください.

  • 2.xUtils 3主要四大モジュール
    xUtilsには現在、DbUtilsモジュール、View Utilsモジュール、HttpUtilsモジュール、BitmapUtilsモジュールの4つの主要なモジュールが含まれています.以下、この4つのモジュールについて説明します.
    2.1 DbUtilsモジュール
  • 1.Androidのormフレームワークは、1行のコードで添削変更できます.
  • 2.トランザクションをサポートし、デフォルトで閉じます.
  • 3.テーブル名、カラム名、外部キー、一意性制約、NOT NULL制約、CHECK制約などを注釈でカスタマイズできます(混同が必要な場合はテーブル名とカラム名を注記してください).
  • 4.外部キーのバインドをサポートし、エンティティを保存すると、外部キー関連エンティティが自動的に保存または更新されます.
  • 5.外部キー関連エンティティを自動的にロードし、遅延ロードをサポートします.
  • 6.チェーン表現クエリーをサポートし、より直感的なクエリーの意味をサポートします.

  • 2.2 ViewUtilsモジュール
  • 1.androidのiocフレームワークは、UI、リソース、イベントバインドを完全に注釈することができます.
  • 2.新しいイベントバインド方式では、混同ツールを使用して混同しても正常に動作します.
  • 3.setClickListenerなど、現在よく使用されている20種類のイベントバインディングがサポートされています.

  • 2.3 HttpUtilsモジュール
  • 1.同期、非同期方式の要求をサポートする.
  • .大ファイルアップロードをサポートし、大ファイルアップロードでoomメモリオーバーフローは発生しません.
  • 3.GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECTのリクエストをサポートする.
  • 4.ダウンロードは301/302リダイレクトをサポートし、Content-Dispositionに従ってダウンロードしたファイルの名前を変更するかどうかを設定することをサポートする.
  • 5.テキストコンテンツを返すリクエスト(デフォルトではGETリクエストのみ有効)はキャッシュをサポートし、デフォルトの有効期限と現在のリクエストに対する有効期限を設定します.

  • 2.4 BitmapUtilsモジュール
  • 1.Bitmapをロードするときは、Bitmapロード中に発生するoomやandroidコンテナがすばやくスライドするときに発生する画像のずれなどを考慮する必要はありません.
  • 2.ネットワークピクチャとローカルピクチャのロードをサポートします.
  • 3.メモリ管理lruアルゴリズムを使用して、Bitmapメモリをよりよく管理します.
  • 4.スレッドのロードスレッド数、キャッシュサイズ、キャッシュパス、表示アニメーションのロードなどを構成できます.

  • xUtils 3におけるViewUtilsの主な役割
    ViewUtilsの主な役割は,UIバインディングとイベントバインディングを完全に注釈できることと,findViewByIdやsetOnClickListenerなどを必要としないことの2つである.UIバインディングとイベントバインディングについては、以下で詳しく説明します.
    1.UIバインド
    UIバインディングは、簡単に言えばコントロールとViewに対して、複数のバインディング方法に分けられます.
    
    @ContentView(R.layout.view_acti); //setContentView    activity     
    @ViewInject(R.id.lv_test); //  view       view   
    
    
    2.イベントバインド
    イベントバインドとは、setOnClickListenerなどのイベントをリスニングする注釈です.
    @Event(R.id.button) //               view     
    
    具体的な使い方は以下の通りです.
    xUtils 3でのViewUtilsの使い方
    xUtils 3フレームワークには多くのツールが含まれており、主な4つのモジュールの機能も強く、今回は主にその中のViewUtilsモジュールの使用について説明します.
    1.Gradle依存関係の追加
    moduleのbuild.gradleファイルの下にxUtils 3への依存を追加します.
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:25.2.0'
        compile 'com.android.support.constraint:constraint-layout:1.0.1'
        testCompile 'junit:junit:4.12'
        compile 'org.xutils:xutils:3.5.0'
    }
    
    
    2.ViewUtils初期化
    ActivityとFragmentではViewUtilsモジュールの初期化が若干異なるので、別々に紹介しました.
    2.1 Activityでの初期化
    Activityでの初期化は比較的簡単で、onCreateの1行のコードで直接できます.
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            x.view().inject(this);
        }
    
    2.2 Fragmentでの初期化
    FragmentのライフサイクルはActivityに依存し、またFragmentではActivityと異なる方法もあるので、ViewUtilsの初期化方法も違います.
    private boolean injected = false;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            injected = true;
            return x.view().inject(this, inflater, container);
        }
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            if (!injected) {
                x.view().inject(this, this.getView());
            }
        }
    
    ここでinjectedは、ビューが注入されたかどうかを識別するために使用され、まだ注入されていない場合は、onViewCreatedに注入ビューを書き込む方法です.
    3.ViewUtilsバインドコントロール
    一般的にActivityまたはFragmentでコントロールを宣言するには、メソッドfindViewByIdを使用します.コントロールが多くなると、面倒になり、コードが多く書かれますが、ViewUtilsを使用すると注釈で直接UIバインドができ、メソッドも簡単です.
    @ViewInject(R.id.textView)
    private TextView textView;
    
    4.ViewUtilsバインドレイアウト
    ActivityまたはFragmentにレイアウトを追加する場合は、setContentView(int layoutRes)メソッドを使用し、ViewUtilsに直接注釈レイアウトを追加します.次のようにします.
    @ContentView(R.layout.activity_main)
    public class MainActivity extends AppCompatActivity {
       .....
    }
    
    Fragmentでの注釈方法は同じですが、Fragmentで直接追加すればいいです.
    5.ViewUtilsバインドイベント
    前のボタンのクリックイベント、リストオプションのitemクリックイベントなどは、コードを書くことが多く、ViewUtilsを使うと簡単になるので、ボタンのクリックイベントのバインドを見てみましょう.
    //                  ,  id        
    //       id @Event({R.id.id1, R.id.id2, R.id.id3})
    // or @Event(value={R.id.id1, R.id.id2, R.id.id3}, parentId={R.id.pid1, R.id.pid2, R.id.pid3})
    //         ViewCommonEventListener   com.lidroid.xutils.view.annotation.event。
    @Event(R.id.test_button)
    public void testButtonClick(View v) { //                
        ...
    }
    
    上はボタンのクリックイベントのバインドで、便利です.リストオプションのitemクリックイベントのバインドを見てみましょう.
    //        OnItemClickListener
    @Event(value = R.id.lv_img, type = AdapterView.OnItemClickListener.class)
        private void onImageItemClick(AdapterView> parent, View view, int position, long id) {
            ....
        }
    
    ViewUtilsでサポートされているイベントのバインドにはいくつかありますが、ここでは主に上記の2つを紹介します.より多くの使用方法はxUtils 3ソースコードを参照してください.
    結尾語
    xUtils 3はxUtilsに基づいて多くの最適化を行い、ViewUtilsの注釈もより簡単明瞭になり、ViewUtilsがあれば、私たちは以前のようにコントロールを絶えず声明する必要はありません.また、イベントの処理も大幅に簡略化され、後期のショッピングモールプロジェクトの実戦では、ViewUtilsを使用してUIのバインドとイベントのバインドを行います.
    【五一大促】菜鳥小屋全場androidプロジェクトの実戦課程は5割引まで低く、さらに価値のある33元の4つの人気技術は無料で受け取り、17年初頭に最も優遇されたイベントで、意向のある子供靴は狂スタンプを見逃さないでください>>http://www.cniao5.com/hd/2017/51.html