Demo学会Android互換パッケージの新しいコントロール

15113 ワード

前言
偉大なGoogleはAndroidのために一連の互換パッケージを発売しました.最新はDesign Support Libraryです.ここではv 7とv 4のいくつかのコントロールを組み合わせて、Design Support Libraryのいくつかの新しいコントロールを主に勉強します.Demoはそれらを使うことを学びます!
効果動図GIF:
Design Support Library Demo
学習内容
この例では、次のことを学習できます.
  • DrawerlayoutとNavigationViewは優雅なGoogleスタイルのサイドバーを実現した.
  • 新しいコントロールCoordinatorLayout、AppBarLayout、Toolbar、FloatingActionButtonの使い方、およびToolbarのグラデーション非表示アニメーション効果;
  • 公式TabsコンポーネントTabLayoutとViewPagerを組み合わせてメインインタフェースのコンテンツ領域を実現する.
  • SwipeRefreshLayoutとRecyclerViewを組み合わせてドロップダウン・リフレッシュ、およびRecyclerViewのデータ・アダプタRecyclerViewを実現する.Adapterの使い方は、RecyclerViewのitemのクリックイベントの実現方法もあります.
  • カード式CardViewの使い方;
  • Toastの新しいコントロールSnackbarのような使い方.

  • レイアウトファイル
    ソースコードでAndroidを学ぶのは、臨場感があります.
    Androidの解釈を勉強してもいくらコードがあっても役に立たない.説明したからといって、まだ使えない.そこで、ここではレイアウトファイルXMLのソースコードを貼って勉強します.安心してください.すべての知識点はソースコードに注釈されています.
    styles.xmlソース
    
    
        
    
    
    

    colorPrimary、colorPrimaryDark、colorAccent、textColorPrimaryの意味は、ブログ「Android L+ThemeとToolbarの例」を参照してください.
    メインレイアウトactivity_my.xmlソース(ポイント)
    
    
        
        
        
    
    
        
        
    
        
    
        
        
    
    
    

    content_main.xmlソース(ポイント)
    
    
    
    
        
        
    
    
            
    
            
            
    
            
            
    
        
    
        
        
    
    
        
        
    
    
    

    frag_main.xmlソース(Fragmentのレイアウト)
    
    
    
    
    
    
        
        
    
    
    
    
    

    item_main.xmlソース(RecyclerViewでitem)
    
    
    
        
    
    
    

    menu_nav.xmlのソースコード(NavagationViewのメニュー)
    
    
    
    
        
    
            
    
            
    
            
            
    
        
    
    

    header_nav.xmlソース(NavagationViewのhead)
    
    
    
            
        
    
        
    
        
    
    

    Javaコード
    Javaコードの書き方は簡単ですが、ここではRecyclerViewのみを示します.Adapterの書き方(itemクリックイベントを含む).
    RecyclerView.Adapter書き方ソース
    package com.sunjiajia.androidnewwidgetsdemo.adapter;
    
    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.sunjiajia.androidnewwidgetsdemo.R;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Monkey on 2015/6/29.
     */
    public class MyRecyclerViewAdapter extends RecyclerView.Adapter {
    
        //       
        public interface OnItemClickListener {
            void onItemClick(View view, int position);
    
            void onItemLongClick(View view, int position);
        }
    
        public OnItemClickListener mOnItemClickListener;
    
        public void setOnItemClickListener(OnItemClickListener listener) {
            this.mOnItemClickListener = listener;
        }
    
    
        public Context mContext;
        public List mDatas;
        public LayoutInflater mLayoutInflater;
    
        public MyRecyclerViewAdapter(Context mContext) {
            this.mContext = mContext;
            mLayoutInflater = LayoutInflater.from(mContext);
            //        。
            mDatas = new ArrayList<>();
            for (int i = 'A'; i <= 'z'; i++) {
                mDatas.add((char) i + "");
            }
        }
    
        /**
         *   ViewHolder
         */
        @Override
        public MyRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View mView = mLayoutInflater.inflate(R.layout.item_main, parent, false);
            MyRecyclerViewHolder mViewHolder = new MyRecyclerViewHolder(mView);
            return mViewHolder;
        }
    
        /**
         *   ViewHoler, item        
         */
        @Override
        public void onBindViewHolder(final MyRecyclerViewHolder holder, final int position) {
            //         ,     RecyclerView                 
            if (mOnItemClickListener != null) {
                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mOnItemClickListener.onItemClick(holder.itemView, position);
                    }
                });
    
                //      
                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        mOnItemClickListener.onItemLongClick(holder.itemView, position);
                        return true;
                    }
                });
    
            }
    
            holder.mTextView.setText(mDatas.get(position));
        }
    
        @Override
        public int getItemCount() {
            return mDatas.size();
        }
    }
    
    

    MyRecyclerViewHolder.JAvaソース
    package com.sunjiajia.androidnewwidgetsdemo.adapter;
    
    import android.support.v7.widget.RecyclerView;
    import android.view.View;
    import android.widget.TextView;
    
    import com.sunjiajia.androidnewwidgetsdemo.R;
    
    /**
     * Created by Monkey on 2015/6/29.
     */
    public class MyRecyclerViewHolder extends RecyclerView.ViewHolder {
    
        public TextView mTextView;
    
        public MyRecyclerViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.id_textview);
        }
    }
    
    

    締めくくり
    ソースコードでAndroidを学ぶのは、臨場感があります.
    DemoのソースコードはGitHubに置いてあります.starさん、ありがとうございます.ソースコードを見ているうちに何か問題があったら、伝言を残して、必ず返事を見てください.
    ソースアドレス:Android NewWidgetsDemo
    作者のブログのアドレス:アンドロイドサルのブログ
    清純な妹.
    画像はネットから
    清純な妹.