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

如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnimator()方法,其语法形式如下:
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的子元素。代码如下:
<?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)创建一个适配器文件,命名为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;
//构造方法
public DataAdapter(Context context, List<string> 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];
}
//删除子元素
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);
}
}
}
}

注意:开发者只有调用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. 【ES】学习9-聚合2

    按时间统计:date_histogram GET /cars/transactions/_search { , "aggs": { "sales": { &qu ...

  2. Git使用四:查看工作状态和历史提交

    查看当前的工作状态:git status On branch master:现在位于master分支里面nothing to commit, working tree clean:没有需要提交的文件, ...

  3. Centos7上vsftp脚本--> sh vsftp.sh 用户名 密码 --> sh vsftp.sh install

    #!/bin/bash #vsftp install . /etc/rc.d/init.d/functions users=/etc/vsftpd/vftpuser.txt login=/etc/vs ...

  4. .tar.xz文件的解压方法

    废话不多说: 直接看 方法一: tar -xvJf ***.tar.gz 方法二: 先减压成 .tar 格式的文件, 再解压 .tar #xz是一个工具, 系统中没有安装,需要下载 xz -d *** ...

  5. Wowza 相关

    下载: 1.https://www.wowza.com/pricing/installer 安装: https://www.wowza.com/docs/how-to-install-and-conf ...

  6. python WebDriver如何处理右键菜单

    WebDriver如何处理右键菜单 一.背景 在学习selenium webdriver的过程中,遇到这样一个问题.ActionChains类中提供了context_click的方法,它可以用来在we ...

  7. linux上安装redis并使用

    1.下载:curl -O http://download.redis.io/releases/redis-4.0.6.tar.gz 2.在/usr/local/redis上解压:tar -zxvf r ...

  8. 步步為營-98-MyAPI

    1 通过NuGet程序管理包添加  Microsoft Asp.Net webAPI 2.2 的引用 2 添加两个文件夹Controllers和Models 2.1 在本地模拟数据库,所以在Model ...

  9. 494. Target Sum

    You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symb ...

  10. docker挂载点泄露问题

    本来以为我不会遇到. 结果还是遇到了. 现象为k8s delete pod时,系统一直显示Terminatiing,无论多久都不能正常. 以下两个帖子大概说明了是怎么回事. https://blog. ...