您好,登錄后才能下訂單哦!
小編給大家分享一下XamarinAndroid中RecylerView動畫組件如何使用動畫,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
如果開發(fā)者要為RecylerView的子元素添加動畫效果,需要使用RecyclerView類中的SetItemAnimator()方法,其語法形式如下:
public virtual void SetItemAnimator(Android.Support.V7.Widget.RecyclerView.ItemAnimator animator)
其中,animator參數(shù)指定一個動畫,這個動畫就是表1-1中列出的動畫類型。
【示例1-1】下面將在RecylerView的子元素進(jìn)行添加以及刪除時,實(shí)現(xiàn)子元素動畫。具體的操作步驟如下:
(1)創(chuàng)建一個名為RecylerViewAnimatorsItemAnimator的項(xiàng)目。
(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項(xiàng)目的引用中。
(3)添加圖片image.jpg到RecylerViewAnimatorsItemAnimator項(xiàng)目的Resources下方的drawable文件夾中。
(4)創(chuàng)建一個xml文件,命名為layout_list_item。
(5)打開layout_list_item.cs文件,構(gòu)建RecylerView的子元素。代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/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)創(chuàng)建一個適配器文件,命名為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;
//構(gòu)造方法
public DataAdapter(Context context, List<string> dataset)
{
this.context = context;
this.dataset = dataset;
}
//子元素的個數(shù)
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);
}
}
}
}
注意:開發(fā)者只有調(diào)用NotifyItemRemoved()、NotifyItemInserted()、NotifyItemChanged()和NotifyItemMoved()方法,才可以觸發(fā)子元素動畫。
以上是“XamarinAndroid中RecylerView動畫組件如何使用動畫”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。