XamarinAndroid元件教程RecylerView動畫元件使用動畫(2)
XamarinAndroid元件教程RecylerView動畫元件使用動畫(2)
如果開發者要為RecylerView的子元素新增動畫效果,需要使用RecyclerView類中的SetItemAnimator()方法,其語法形式如下:
點選(此處)摺疊或開啟
- public virtual void SetItemAnimator(Android.Support.V7.Widget.RecyclerView.ItemAnimator animator)
其中,animator引數指定一個動畫,這個動畫就是表1-1中列出的動畫型別。
【示例1-1】下面將在RecylerView的子元素進行新增以及刪除時,實現子元素動畫。具體的操作步驟如下:
(1)建立一個名為RecylerViewAnimatorsItemAnimator的專案。
(2)將RecyclerViewAnimators.dll、Square.OkHttp.dll、Square.OkIO.dll、Square.Picasso.dll、Xamarin.Android.Arch.Core.Common.dll、Xamarin.Android.Arch.Lifecycle.Common.dll、Xamarin.Android.Arch.Lifecycle.Runtime.dll、Xamarin.Android.Support.Animated.Vector.Drawable.dll、Xamarin.Android.Support.Annotations.dll、Xamarin.Android.Support.Compat.dll、Xamarin.Android.Support.Core.UI.dll、Xamarin.Android.Support.Core.Utils.dll、Xamarin.Android.Support.Fragment.dll、Xamarin.Android.Support.Media.Compat.dll、Xamarin.Android.Support.v4.dll、Xamarin.Android.Support.v7.AppCompat.dll、Xamarin.Android.Support.v7.RecyclerView.dll和Xamarin.Android.Support.Vector.Drawable.dll庫新增到RecylerViewAnimatorsItemAnimator專案的引用中。
(3)新增圖片image.jpg到RecylerViewAnimatorsItemAnimator專案的Resources下方的drawable資料夾中。
(4)建立一個xml檔案,命名為layout_list_item。
(5)開啟layout_list_item.cs檔案,構建RecylerView的子元素。程式碼如下:
點選(此處)摺疊或開啟
-
<?xml version="1.0" encoding="utf-8"?>
-
<LinearLayout xmlns:android=""
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:padding="20dp"
-
android:orientation="vertical">
-
<ImageView
-
android:id="@+id/image"
-
android:layout_width="match_parent"
-
android:layout_height="100dp"
-
android:background="#11000000"
-
android:scaleType="centerCrop"/>
-
<TextView
-
android:id="@+id/text"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:layout_gravity="center_horizontal"
-
android:textSize="18sp" />
- </LinearLayout>
(6)建立一個介面卡檔案,命名為DataAdapter。
(7)開啟DataAdapter.cs檔案,新增以下程式碼:
點選(此處)摺疊或開啟
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
using Android.App;
-
using Android.Content;
-
using Android.OS;
-
using Android.Runtime;
-
using Android.Views;
-
using Android.Widget;
-
using Square.Picasso;
-
using Android.Support.V7.Widget;
-
namespace RecylerViewAnimatorsItemAnimator
-
{
-
public class DataAdapter : RecyclerView.Adapter
-
{
-
Context context;
-
List<string> dataset;
-
//構造方法
-
public DataAdapter(Context context, List<string> dataset)
-
{
-
this.context = context;
-
this.dataset = dataset;
-
}
-
//子元素的個數
-
public override int ItemCount
-
{
-
get
-
{
-
return dataset.Count;
-
}
-
}
-
//返回一個自定義的ViewHolder
-
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
-
{
-
var v = LayoutInflater.From(context).Inflate(Resource.Layout.layout_list_item, parent, false);
-
return new ViewHolder(v);
-
}
-
//填充onCreateViewHolder()方法返回的ViewHolder中的控制元件
-
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
-
{
-
var h = (ViewHolder)holder;
-
Picasso.With(context).Load(Resource.Drawable.image).Into(h.Image);
-
h.Text.Text = dataset[position];
-
}
-
//刪除子元素
-
public void Remove(int position)
-
{
-
dataset.RemoveAt(position);
-
NotifyItemRemoved(position);
-
}
-
//新增子元素
-
public void Add(string text, int position)
-
{
-
dataset.Insert(position, text);
-
NotifyItemInserted(position);
-
}
-
private class ViewHolder : RecyclerView.ViewHolder
-
{
-
public ImageView Image { get; private set; }
-
public TextView Text { get; private set; }
-
public ViewHolder(View itemView)
-
: base(itemView)
-
{
-
Image = itemView.FindViewById<ImageView>(Resource.Id.image);
-
Text = itemView.FindViewById<TextView>(Resource.Id.text);
-
}
-
}
-
}
- }
注意:開發者只有呼叫NotifyItemRemoved()、NotifyItemInserted()、NotifyItemChanged()和NotifyItemMoved()方法,才可以觸發子元素動畫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2154548/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- XamarinAndroid元件教程RecylerView動畫元件使用動畫(3)NaNAndroid元件View動畫
- XamarinAndroid元件教程RecylerView介面卡使用動畫NaNAndroid元件View動畫
- XamarinAndroid元件教程RecylerView自定義介面卡動畫NaNAndroid元件View動畫
- XamarinAndroid元件教程RecylerView介面卡設定動畫NaNAndroid元件View動畫
- XamarinAndroid元件教程RecylerView介面卡設定動畫示例NaNAndroid元件View動畫
- RecylerView動畫元件RecylerViewAnimatorsView動畫元件
- Xamarin Android元件篇教程RecylerView動畫元件RecylerViewAnimators(1)Android元件View動畫
- XamarinAndroid元件教程設定自定義子元素動畫(二)NaNAndroid元件動畫
- XamarinAndroid元件教程設定自定義子元素動畫(一)NaNAndroid元件動畫
- XamarinAndroid元件教程設定動畫的時長引數NaNAndroid元件動畫
- XamarinAndroid元件教程設定動畫的設定插值器NaNAndroid元件動畫
- Flutter動畫之自定義動畫元件-FlutterLayoutFlutter動畫元件
- Flutter動畫 5 - Flutter內建動畫元件Flutter動畫元件
- 萬彩動畫大師教程 | 如何新增花紋裝飾動畫元件動畫元件
- image元件動畫問題元件動畫
- 爆炸銷燬動畫元件Explosions動畫元件
- 鴻蒙HarmonyO實戰-ArkUI動畫(元件內轉場動畫)鴻蒙UI動畫元件
- 手寫一個 React 動畫元件React動畫元件
- Flutter 動畫控制元件收集專案Flutter動畫控制元件
- 檢視屬性+物件動畫元件ViewPropertyObjectAnimator物件動畫元件ViewObject
- (二)建立Animation元件和動畫剪輯元件動畫
- 文字路徑動畫控制元件TextPathView解析動畫控制元件View
- WPF給控制元件新增運動動畫控制元件動畫
- 雙輪播加切換動畫效果元件動畫元件
- 《Flutter 動畫系列二》Google工程師帶你選擇Flutter動畫控制元件Flutter動畫Go工程師控制元件
- 自定義控制元件——弄個甜甜圈吧(3): 動畫篇【生長動畫】控制元件動畫
- Lottie動畫教程動畫
- canvas動畫教程-2 基礎設施Canvas動畫
- PPT動畫教程:使用設計方案動畫
- 一個簡單的構建React元件動畫方案React元件動畫
- RN自定義元件封裝 - 播放類似PPT動畫元件封裝動畫
- 萬彩動畫大師教程 | 新增動畫效果動畫
- 在C++ Builder中使用ActiveX控制元件顯示Flash動畫 (轉)C++UI控制元件動畫
- CSS動畫-數字輪盤滾動效果實現(元件封裝,快速使用)CSS動畫元件封裝
- [-Flutter 自定義元件-] 蛛網圖+繪製+動畫實踐Flutter元件動畫
- 微信小程式有旋轉動畫效果的音樂元件微信小程式動畫元件
- 在React中寫一個Animation元件,為元件進入和離開加上動畫/過度React元件動畫
- 萬彩動畫大師教程 | 如何分享動畫視訊?動畫