2

我在活動和Recyclerview項目之一中有一個recyclerview實現,單擊導航到不同的屏幕。但是當用戶點擊Recyclerview項目時,用戶在導航到其他活動之前可以看到連鎖效果(在API級別> = 21)。 我的問題是有些時候導航很快,用戶無法注意到任何連鎖反應。如何在幾毫秒內延遲導航,以便用戶可以看到一些連鎖反應。Recyclerview項目上的波紋效果在某些時候不明顯

Recyclerview佈局如下

<android.support.v7.widget.RecyclerView 
        android:id="@+id/recyclerView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@color/white" 
        android:focusable="true" 
        android:clickable="true" 
        android:foreground="?android:attr/selectableItemBackground" 
        android:clipToPadding="false"/> 

Recyclerview項目佈局如下

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:clickable="true" 
    android:focusable="true" 
    android:background="?android:attr/selectableItemBackground" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <!-- ListRow Left sied Thumbnail image --> 
    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="@dimen/pad_3dp" 
     android:orientation="vertical" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="@dimen/pad_5dp"> 

     <com.unvired.shout.util.CircularImageView 
      android:id="@+id/thumbnail_image" 
      android:layout_width="@dimen/pad_50dp" 
      android:layout_height="@dimen/pad_50dp" 
      app:border_color="?attr/colorPrimary" 
      app:border_width="@dimen/pad_2dp" 
      app:shadow="true" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <ImageView 
       android:layout_width="@dimen/pad_20dp" 
       android:layout_height="@dimen/pad_15dp" 
       android:id="@+id/chat_red_image" 
       android:layout_centerVertical="true" /> 

      <ImageView 
       android:layout_width="@dimen/pad_20dp" 
       android:layout_height="@dimen/pad_20dp" 
       android:layout_marginLeft="@dimen/pad_5dp" 
       android:id="@+id/chat_reply_image" 
       android:layout_centerVertical="true" /> 
     </LinearLayout> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="Rihanna Love the way lie" 
     android:layout_marginTop="@dimen/pad_5dp" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="@dimen/txt_15sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/feed_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/name" 
     android:textColor="#343434" 
     android:textSize="@dimen/txt_12sp" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="Just gona stand there and ..." /> 

    <TextView 
     android:id="@+id/time" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:layout_alignParentRight="true" 
     android:text="5:45" 
     android:textSize="@dimen/txt_12sp" 
     android:textColor="?attr/colorPrimary" 
     android:layout_marginRight="@dimen/pad_5dp" 
     android:layout_marginTop="@dimen/pad_5dp" 
     android:textStyle="bold" /> 


    <ImageView 
     android:layout_width="@dimen/pad_30dp" 
     android:layout_height="@dimen/pad_30dp" 
     android:id="@+id/conversation_indicator" 
     android:src="@drawable/link" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" /> 
</RelativeLayout> 

回答

3

你可能喜歡推遲幾毫秒,開始新的活動/片段這樣

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     startActivity(...) // For starting an activity 

     // Or for doing a fragment transaction 
     // fragmentTransaction.commit(); 
    } 
}, 250);