Required Library and library engineering
Library:
android-support-v7-recyclerview.jar:v21.x
android-support-v4.jar:v21.x
Library project:
android-support-v7-appcompat:v21.x
android-support-v7-CardView
Note: CardView must use the library project instead of the jar package because it references custom properties
However, if you have to use CardView and do not import the project, we recommend the use of CardView source code, the main steps are as follows :
① Copy the custom attr,color,dimens,styles to the project directory
② Modify the import ANDROID.SUPPORT.V7.CARDVIEW.R in the source code; R resources into the current project
③ carefully complete the above 2 steps
Effect Preview
Activity file
package st.app.base.rcp;import java.lang.reflect.method;import java.util.arraylist;import java.util.list;import android.os.bundle;import android.support.v7.app.actionbaractivity;import Android.support.v7.internal.view.menu.menubuilder;import android.support.v7.widget.recyclerview;import android.support.v7.widget.StaggeredGridLayoutManager;import android.support.v7.widget.Toolbar; import android.util.log;import android.view.menu;import android.view.menuitem;import Android.view.view;public class waterfallactivity extends actionbaractivity {private Toolbar mToolbar;private RecyclerView mRecyclerView;private List<String> mdatas = null;private simplerecyclercardadapter msimplerecycleradapter; @Overrideprotected void oncreate (bundle savedinstancestate) {super.oncreate (savedInstanceState); Setcontentview (R.layout.activity_main);mtoolbar = (Toolbar) findviewbyid (R.id.toolbar); mrecyclerview = ( Recyclerview) findviewbyid (R.id.app_recyclerview); Initapptoolbar (); Initdataandview ();} Private void initdataandview () {mDatas = new ArrayList<String> (); for (int i= ' A '; i<= ' z '; i++) {Mdatas.add (string.valueof ((char) i));} Msimplerecycleradapter = new simplerecyclercardadapter (This, mdatas); Mrecyclerview.setadapter (msimplerecycleradapter);//Set Grid layout manager Mrecyclerview.setlayoutmanager (new Staggeredgridlayoutmanager (3, staggeredgridlayoutmanager.vertical));} /** * init app bar */private void initapptoolbar () { Mtoolbar.setnavigationicon (r.drawable.ktv_ic_main_hot_pressed); Mtoolbar.settitle ("Rocko");// The text of the title must precede the Setsupportactionbar, otherwise it will be invalid mtoolbar.inflatemenu (r.menu.main); Setshortcutsvisible ( Mtoolbar.getmenu ()); Mtoolbar.setonmenuitemclicklistener (new toolbar.onmenuitEmclicklistener () { @Override Public boolean onmenuitemclick (Menuitem item) { switch (Item.getitemid ()) { case R.id.action_settings: break; case r.id.action_mail: break; case R.id.action_plus: break; default: break; } return true; } }); Mtoolbar.setnavigationonclicklistener (New view.onclicklistener () {@Overridepublic void OnClick (VIEW&NBSP;V) {log.e ("Navigation", "click");}}); Private void setshortcutsvisible (Menu menu) {if (MenuBuilder.class.isInstance (Menu)) {Menubuilder builder = (Menubuilder) menu;builder.setshortcutsvisible (true); try {method m = menu.getclass (). Getdeclaredmethod ("setoptionaliconsvisible", boolean.type); M.setAccessible ( true); M.invoke (builder, true);} catch (Exception ie) {}}}
Adapter+viewholder
import java.util.arraylist;import java.util.list;import android.content.context;import Android.support.v7.widget.recyclerview;import android.support.v7.widget.recyclerview.viewholder;import android.view.layoutinflater;import android.view.view;import android.view.viewgroup;import android.widget.ImageView;import android.widget.TextView;public class Simplerecyclercardadapter extends recyclerview.adapter<simplecardviewholder>{private Context mCtx;private LayoutInflater mInflater;private final List<String> mDataSource = new ArrayList<String> ( public simplerecyclercardadapter); context mctx, list<string> datalist) {super (); this.mctx = mctx;minflater = layoutinflater.from (MCTX); This.mDataSource.addAll (dataList);} @Overridepublic int getitemcount () {return mdatasource.size ();} @OVerridepublic void onbindviewholder (simplecardviewholder viewholder, int i) { ViewHolder.itemTv.setText (Mdatasource.get (i)); Int resid = mctx.getresources (). Getidentifier (" Img_ "+i, " drawable ", mctx.getpackagename ()); if (resid!=0) {viewHolder.itemIv.setImageResource (resId);}} @Overridepublic simplecardviewholder oncreateviewholder (viewgroup viewgroup, int i) {view v = minflater.inflate (R.layout.simple_card_item, viewgroup,false); Simplecardviewholder simpleviewholder = new simplecardviewholder (v); Simpleviewholder.setisrecyclable (true); return simpleviewholder;}} class simplecardviewholder extends viewholder{public textview itemtv;public Imageview itemiv;public simplecardviewholder (view layout) {super (layout); itemTv = (TextView) layout.findviewbyid (r.id.item_title);itemiv = (ImageView) &NBSp;layout.findviewbyid (R.ID.ITEM_IMG);}}
Layout file
<linearlayout xmlns:android= "Http://schemas.android.com/apk/res/android" xmlns: app= "Http://schemas.android.com/apk/res-auto" xmlns:tools= "http://schemas.android.com/ Tools " android:layout_width=" Match_parent " android:layout_height = "Match_parent" android:orientation= "vertical" android: Background= "@android: Color/white" tools:context= "st.app.base.rcp.MainActivity" > <android.support.v7.widget.Toolbar android:id= "@+id/toolbar" android:layout_width= "Match_ Parent " android:layout_height=" Wrap_content " android:background= "@color/material_deep_teal_500" android:minheight= "? attr/actionbarsize" app:popuptheme= "@style/appbartheme" app:theme= "@style/themeoverlay.appcompat.actionbar" > </android.support.v7.widget.Toolbar> < Android.support.v7.widget.recyclerview android:id= "@+id/app_ Recyclerview " android:layout_width=" Match_parent " android:layout_height= "Match_parent" /></LinearLayout>
Item Layout File
<?xml version= "1.0" encoding= "Utf-8"?><android.support.v7.widget.cardview xmlns:android= "Http://schemas.android.com/apk/res/android" xmlns:app= "Http://schemas.android.com/apk/res-auto" android:id= "@+id/cardview" android:layout_margin= "0DP" android:layout_ height= "83DP" app:cardbackgroundcolor= "@android: Color/white" app:cardcornerradius= "5DP" app:cardelevation= "5DP" app:contentpadding= "5dip" android:layout_width= "Match_parent" > <RelativeLayout android:layout_width= "Match_parent" android:layout_height= "Match_parent" > <imageview android:id= "@+id/item_img" android:layout_width= "Match_parent" android:layout_height= "Wrap_content" android:layout_centerhorizontal= "true" android:scaletype= "FitCenter" / > <TextView android:id= "@+id/item_title" android:layout_width= "Wrap_content" android:layout_height= "Wrap_content" android:layout_below= "@+id/item_img" android:layout_centerhorizontal= "true" android:textcolor= "@color/ material_deep_teal_500 " android: paddingleft= "@dimen/activity_horizontal_margin" android:paddingright= "@dimen/activity_horizontal_margin" /> </RelativeLayout> </android.support.v7.widget.CardView>
Android Recyclerview+cardview for waterfall streaming effects