XamarinAndroid組件教程RecylerView適配器設(shè)置動(dòng)畫(huà)示例

XamarinAndroid組件教程RecylerView適配器設(shè)置動(dòng)畫(huà)示例

【示例1-3】下面將在RecylerView的子元素進(jìn)行滾動(dòng)時(shí),使用適配器動(dòng)畫(huà)仑濒。具體的操作步驟如下:

(1)創(chuàng)建一個(gè)名為RecylerViewAnimatorsAdapter的項(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庫(kù)添加到RecylerViewAnimatorsAdapter項(xiàng)目的引用中。

(3)添加圖片chip.jpg到RecylerViewAnimatorsAdapter項(xiàng)目的Resources下方的drawable文件夾中荣刑。

(4)創(chuàng)建一個(gè)xml文件馅笙,命名為layout_list_item。

(5)打開(kāi)layout_list_item.cs文件厉亏,構(gòu)建RecylerView的子元素董习。代碼與RecylerViewAnimatorsItemAnimator項(xiàng)目一樣。只不過(guò)需要將TextView的顏色設(shè)置為黑色爱只。

(6)創(chuàng)建一個(gè)適配器文件皿淋,命名為DataAdapter。

(7)打開(kāi)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 RecylerViewAnimatorsAdapter

{

?class DataAdapter : RecyclerView.Adapter

?{

?Context context;

?List dataset;

?public DataAdapter(Context context, List dataset)

?{

?this.context = context;

?this.dataset = dataset;

?}

?//子元素的個(gè)數(shù)

?public override int ItemCount

?{

?get

?{

?return dataset.Count;

?}

?}

?//返回一個(gè)自定義的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];

?}

?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(Resource.Id.image);

?Text = itemView.FindViewById(Resource.Id.text);

?}

?}

?}

}

(8)打開(kāi)Main.axml文件沥匈,構(gòu)建RecyclerView。代碼如下:


?android:orientation="vertical"

?android:layout_width="match_parent"

?android:layout_height="match_parent"

?android:background="#FFFFFF">


?android:id="@+id/list"

?android:layout_width="match_parent"

?android:layout_height="match_parent"/>

(9)打開(kāi)MainActivity.cs文件忘渔,在RecylerView滾動(dòng)時(shí)使用適配器動(dòng)畫(huà)。代碼如下:

using Android.App;

using Android.Widget;

using Android.OS;

using Android.Support.V7.Widget;

using System.Linq;

using RecyclerViewAnimators.Adapters;

using Android.Views.Animations;

namespace RecylerViewAnimatorsAdapter

{

?[Activity(Label = "RecylerViewAnimatorsAdapter", MainLauncher = true, Icon = "@mipmap/icon")]

?public class MainActivity : Activity

?{

?static readonly string[] data = {

?"Apple", "Ball", "Camera", "Day", "Egg", "Foo", "Google", "Hello", "Iron", "Japan", "Coke",

?"Dog", "Cat", "Yahoo", "Sony", "Canon", "Fujitsu", "USA", "Nexus", "LINE", "Haskell", "C++",

?"Java", "Go", "Swift", "Objective-c", "Ruby", "PHP", "Bash", "ksh", "C", "Groovy", "Kotlin",

?"Chip", "Japan", "U.S.A", "San Francisco", "Paris", "Tokyo", "Silicon Valley", "London",

?"Spain", "China", "Taiwan", "Asia", "New York", "France", "Kyoto", "Android", "Google", "C#",

?"iPhone", "iPad", "iPod", "Wasabeef", "Xamarin", "South Africa", "Cape Town", "Microsoft"

?};

?protected override void OnCreate(Bundle savedInstanceState)

?{

?base.OnCreate(savedInstanceState);

?SetContentView(Resource.Layout.Main);

?var recyclerView = FindViewById(Resource.Id.list);

?recyclerView.SetLayoutManager(new LinearLayoutManager(this));

?var adapter = new DataAdapter(this, data.ToList());

?var alphaAdapter = new AlphaInAnimationAdapter(adapter);?//創(chuàng)建適配器動(dòng)畫(huà)

?var scaleAdapter = new ScaleInAnimationAdapter(alphaAdapter);?//創(chuàng)建復(fù)合適配器動(dòng)畫(huà)

?scaleAdapter.SetFirstOnly(false);?//不是顯示一次動(dòng)畫(huà)效果

?scaleAdapter.SetInterpolator(new OvershootInterpolator());?//設(shè)置插值器

?recyclerView.SetAdapter(scaleAdapter);??//設(shè)置適配器

?}

?}

}

運(yùn)行程序后缰儿,初始狀態(tài)如圖1.3所示畦粮。當(dāng)滾動(dòng)子元素后,會(huì)看到動(dòng)畫(huà)效果。


圖1.3? 初始狀態(tài)?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宣赔,一起剝皮案震驚了整個(gè)濱河市预麸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儒将,老刑警劉巖吏祸,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钩蚊,居然都是意外死亡贡翘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)砰逻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸣驱,“玉大人,你說(shuō)我怎么就攤上這事蝠咆∮欢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵刚操,是天一觀的道長(zhǎng)闸翅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)菊霜,這世上最難降的妖魔是什么坚冀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮占卧,結(jié)果婚禮上遗菠,老公的妹妹穿的比我還像新娘。我一直安慰自己华蜒,他們只是感情好辙纬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著叭喜,像睡著了一般贺拣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捂蕴,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天譬涡,我揣著相機(jī)與錄音,去河邊找鬼啥辨。 笑死涡匀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溉知。 我是一名探鬼主播陨瘩,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腕够,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了舌劳?” 一聲冷哼從身側(cè)響起帚湘,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甚淡,沒(méi)想到半個(gè)月后大诸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贯卦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年资柔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脸侥。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡建邓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睁枕,到底是詐尸還是另有隱情官边,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布外遇,位于F島的核電站注簿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跳仿。R本人自食惡果不足惜诡渴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菲语。 院中可真熱鬧妄辩,春花似錦、人聲如沸山上。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佩憾。三九已至哮伟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妄帘,已是汗流浹背楞黄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抡驼,地道東北人鬼廓。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像致盟,于是被迫代替她去往敵國(guó)和親桑阶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柏副,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容