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

如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnimator()方法,其语法形式如下:
  1. 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的子元素。代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:padding="20dp"
  6. android:orientation="vertical">
  7. <ImageView
  8. android:id="@+id/image"
  9. android:layout_width="match_parent"
  10. android:layout_height="100dp"
  11. android:background="#11000000"
  12. android:scaleType="centerCrop"/>
  13. <TextView
  14. android:id="@+id/text"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:layout_gravity="center_horizontal"
  18. android:textSize="18sp" />
  19. </LinearLayout>

(6)创建一个适配器文件,命名为DataAdapter。

(7)打开DataAdapter.cs文件,添加以下代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Android.App;
  6. using Android.Content;
  7. using Android.OS;
  8. using Android.Runtime;
  9. using Android.Views;
  10. using Android.Widget;
  11. using Square.Picasso;
  12. using Android.Support.V7.Widget;
  13. namespace RecylerViewAnimatorsItemAnimator
  14. {
  15. public class DataAdapter : RecyclerView.Adapter
  16. {
  17. Context context;
  18. List<string> dataset;
  19. //构造方法
  20. public DataAdapter(Context context, List<string> dataset)
  21. {
  22. this.context = context;
  23. this.dataset = dataset;
  24. }
  25. //子元素的个数
  26. public override int ItemCount
  27. {
  28. get
  29. {
  30. return dataset.Count;
  31. }
  32. }
  33. //返回一个自定义的ViewHolder
  34. public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
  35. {
  36. var v = LayoutInflater.From(context).Inflate(Resource.Layout.layout_list_item, parent, false);
  37. return new ViewHolder(v);
  38. }
  39. //填充onCreateViewHolder()方法返回的ViewHolder中的控件
  40. public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
  41. {
  42. var h = (ViewHolder)holder;
  43. Picasso.With(context).Load(Resource.Drawable.image).Into(h.Image);
  44. h.Text.Text = dataset[position];
  45. }
  46. //删除子元素
  47. public void Remove(int position)
  48. {
  49. dataset.RemoveAt(position);
  50. NotifyItemRemoved(position);
  51. }
  52. //添加子元素
  53. public void Add(string text, int position)
  54. {
  55. dataset.Insert(position, text);
  56. NotifyItemInserted(position);
  57. }
  58. private class ViewHolder : RecyclerView.ViewHolder
  59. {
  60. public ImageView Image { get; private set; }
  61. public TextView Text { get; private set; }
  62. public ViewHolder(View itemView)
  63. : base(itemView)
  64. {
  65. Image = itemView.FindViewById<ImageView>(Resource.Id.image);
  66. Text = itemView.FindViewById<TextView>(Resource.Id.text);
  67. }
  68. }
  69. }
  70. }

注意:开发者只有调用NotifyItemRemoved()、NotifyItemInserted()、NotifyItemChanged()和NotifyItemMoved()方法,才可以触发子元素动画。

XamarinAndroid组件教程RecylerView动画组件使用动画(2)的更多相关文章

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

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

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

    XamarinAndroid组件教程RecylerView适配器设置动画示例 [示例1-3]下面将在RecylerView的子元素进行滚动时,使用适配器动画.具体的操作步骤如下: (1)创建一个名为R ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. Xamarin Android组件篇教程RecylerView动画组件RecylerViewAnimators(1)

    Xamarin Android组件篇教程RecylerView动画组件RecylerViewAnimators(1) RecyclerView是比ListView和GridView更为强大的布局视图, ...

随机推荐

  1. mysql 安装问题一:由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。

    这种错误是由于未安装  vcredist  引起的 下载  vcredist  地址:https://www.microsoft.com/zh-CN/download/details.aspx?id= ...

  2. 使用gulp进行代码压缩

    gulp是一个很不错的前端自动化工具,可以帮我们完成一些重复性操作,比如html.css和js代码的压缩.合并.混淆等,虽然这些操作可以通过一些在线工具帮我们实现,但不断重复地复制粘贴肯定比不上一句命 ...

  3. SSM + Android 网络文件上传下载

    SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...

  4. PAT Basic 1071. 小赌怡情(15)

    题目内容 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注t个筹码后,计算机给出第二个数.若玩家猜对 ...

  5. HDFS的一些配置文件修改

    sbin/start-dfs.sh 和 sbin/stop-dfs.sh 在第二行增加如下内容 HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hd ...

  6. Spring MVC 注解

    概述   Spring MVC是一个采用依赖注入的思想编写.对象的依赖注入Bean的方式可以通过Spring XML里面配置,配置之后的Bean使用时候,无需使用New关键字建立对象.但是如果所有的B ...

  7. BZOJ 1706

    题解: 倍增+floyd 首先这题比较容易想到是把每个点拆点做dij 但是这样复杂度是knlogn的 这道题的k较大,所以不行 我们考虑到每走一步,其实就是在进行一次floyd 而这个可以看成矩阵乘法 ...

  8. 搭建自己的docker仓库

    https://docs.docker.com/registry/deploying/#run-a-local-registry https://docs.docker.com/registry/in ...

  9. SQL Server生成数据库的数据字典存储过程

    use fpErp  --指定要生成数据字典的数据库 go SELECT 表名=case when a.colorder=1 then d.name else '' end, 表说明=case whe ...

  10. nignx部署Vue单页面刷新路由404问题解决

    官网说明: https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E8%AD%A6%E5%91%8A 在linux下搭建ngi ...