XamarinAndroid组件教程RecylerView适配器设置动画示例

XamarinAndroid组件教程RecylerView适配器设置动画示例

【示例1-3】下面将在RecylerView的子元素进行滚动时,使用适配器动画。具体的操作步骤如下:

(1)创建一个名为RecylerViewAnimatorsAdapter的项目。

(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库添加到RecylerViewAnimatorsAdapter项目的引用中。

(3)添加图片chip.jpg到RecylerViewAnimatorsAdapter项目的Resources下方的drawable文件夹中。

(4)创建一个xml文件,命名为layout_list_item。

(5)打开layout_list_item.cs文件,构建RecylerView的子元素。代码与RecylerViewAnimatorsItemAnimator项目一样。只不过需要将TextView的颜色设置为黑色。

(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 RecylerViewAnimatorsAdapter

{

 class DataAdapter : RecyclerView.Adapter

 {

 Context context;

 List dataset;

 public DataAdapter(Context context, List 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];

 }

 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)打开Main.axml文件,构建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)打开MainActivity.cs文件,在RecylerView滚动时使用适配器动画。代码如下:

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); //创建适配器动画

 var scaleAdapter = new ScaleInAnimationAdapter(alphaAdapter); //创建复合适配器动画

 scaleAdapter.SetFirstOnly(false); //不是显示一次动画效果

 scaleAdapter.SetInterpolator(new OvershootInterpolator()); //设置插值器

 recyclerView.SetAdapter(scaleAdapter);  //设置适配器

 }

 }

}

运行程序后,初始状态如图1.3所示。当滚动子元素后,会看到动画效果。


图1.3  初始状态 
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容