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<string> dataset;public DataAdapter(Context context, List<string> dataset){this.context = context;this.dataset = dataset;}//子元素的个数public override int ItemCount{get{return dataset.Count;}}//返回一个自定义的ViewHolderpublic 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<ImageView>(Resource.Id.image);Text = itemView.FindViewById<TextView>(Resource.Id.text);}}}}

(8)打开Main.axml文件,构建RecyclerView。代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFF"><android.support.v7.widget.RecyclerViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>

(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<RecyclerView>(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所示。当滚动子元素后,会看到动画效果。

XamarinAndroid组件教程RecylerView适配器设置动画示例相关推荐

  1. XamarinAndroid组件教程RecylerView适配器设置动画

    XamarinAndroid组件教程RecylerView适配器设置动画 本小节将讲解动画相关设置,如动画的时长.插值器以及复合动画等. 1.设置动画时长 设置动画持续的时间可以使用Animation ...

  2. XamarinAndroid组件教程RecylerView适配器使用动画

    XamarinAndroid组件教程RecylerView适配器使用动画 为RecylerView使用RecylerViewAnimators组件中提供的适配器动画,需要使用RecyclerView类 ...

  3. XamarinAndroid组件教程RecylerView适配器动画动画种类

    XamarinAndroid组件教程RecylerView适配器动画动画种类 本节将讲解RecylerView适配器动画,其中包含动画种类和如何使用动画. 动画种类 RecylerViewAnimat ...

  4. XamarinAndroid组件教程RecylerView自定义适配器动画

    XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...

  5. XamarinAndroid组件教程RecylerView动画组件使用动画(3)

    XamarinAndroid组件教程RecylerView动画组件使用动画(3) (8)打开Main.axml文件,构建主界面.代码如下: <?xml version="1.0&quo ...

  6. XamarinAndroid组件教程RecylerView动画组件使用动画(2)

    XamarinAndroid组件教程RecylerView动画组件使用动画(2) 如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnim ...

  7. XamarinAndroid组件教程设置自定义子元素动画(一)

    XamarinAndroid组件教程设置自定义子元素动画(一) 如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个.此时,需要让自定义的动画继 ...

  8. XamarinAndroid组件教程设置自定义子元素动画(二)

    XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: --using ...

  9. XamarinAndroid组件教程设置动画的设置插值器

    XamarinAndroid组件教程设置动画的设置插值器 为动画设置插值器,可以使用BaseItemAnimator抽象类中的SetInterpolator()方法,其语法形式如下: public v ...

最新文章

  1. 浅谈权限设计(来自深空老大)
  2. Asp.net Mvc问题索引
  3. 一个简单的tcpserver
  4. 百度地图API(二)
  5. 第一天--来个占位符,让自己有一席之地
  6. 后台原理_从浏览器如何进入路由器后台【详细介绍】
  7. nimbus java_Java:Swing使用Nimbus皮肤
  8. Docker 容器CPU设置
  9. String equals()方法 源码分析
  10. PL-VIO论文阅读
  11. (转)动态规划和贪心算法的区别
  12. 1 CentOS 6下FastDFS实现分布式文件系统
  13. 强悍的 Linux —— 文件解压与解压
  14. 海思Hi3559AV100ES Camera芯片处理器参数
  15. HTML字体及文本样式
  16. 2021年特种设备气瓶充装(全国特种设备-P气瓶充装模拟考试题库一)安考星
  17. XTDRONE:ego_planner三维运动规划
  18. 最新初中级前端面试题合集一,你确定不看一看嘛
  19. 用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型
  20. unity Input.GetTouch

热门文章

  1. 一个Web页面的问题分析
  2. 中​文​字​号​、​磅​和​像​素​对​照​关​系
  3. java转换CSV文件生成xml格式数据
  4. linux显示没有网卡
  5. 开发手记之-在Winform中为ListBox的添加选项值,并增加双击事件
  6. 自动化测试(二) 单元测试junit的Test注解突然不能使用原因以及解决方案
  7. 解决IE8,7下设置背景图片 background-size 不支持问题
  8. uiautomatorviewer 双击闪退问题解决
  9. 解决IDEA中,maven依赖不自动补全的问题
  10. Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决