Android Recyclerview+cardview for waterfall streaming effects

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.