XamarinAndroid组件教程RecylerView动画组件使用动画(2)
2023-09-11 14:17:01 时间
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()方法,才可以触发子元素动画。
相关文章
- animate结合jQuery实现hover用户交互动画
- Flutter AnimatedSwitcher 动画切换组件的基本使用
- XamarinAndroid组件教程RecylerView适配器设置动画示例
- XamarinAndroid组件教程设置自定义子元素动画(二)
- 视图属性+对象动画组件ViewPropertyObjectAnimator
- image组件动画问题
- SwiftUI 实战之 01 开机引导动画组件(教程含源码)
- SwiftUI 特色组件之 极简动画提示tool tip(教程含源码)
- SwiftUI 动画组件之Lottie小型高质量交互式的开源动画文件格式
- SwiftUI WWDC21 新绘图和动画组件之 02 语义形状新增四个样式
- SwiftUI WWDC21 新绘图和动画组件之 01 Canvas 支持即时模式绘制的视图类型
- SwiftUI 文本组件之滚动动画数字组件 实现充满情感的微交互
- SwiftUI iOS 精品进度条组件之支持百分比和成功动画 (教程含源码)
- vue--组件动画效果--淡入淡出--位移
- UIView 动画 依赖与 CALayer的证据
- SwiftUI 特色组件之 极简动画提示tool tip(教程含源码)
- SwiftUI 动画图形之绘制正弦波实现个性化波浪纹效果 (教程含源码)
- SwiftUI 动画组件之Lottie小型高质量交互式的开源动画文件格式
- SwiftUI iOS 精品进度条组件之支持百分比和成功动画 (教程含源码)
- SwiftUI iOS 提示组件之 成功完成动画提示框Alert Toast弹窗(教程含源码)
- Qt之窗口动画(下坠、抖动、透明度)
- 【Vue】vue基础语法——自定义指令、过滤、组件和动画(内附详细案例代码)——day04
- css动画之颤动的动画
- vue 使用动画钩子函数
- 虚幻——动画蓝图、状态机制作人物走跑跳动作
- Unity制作GIF动画播放组件
- 关于Unity中的帧动画组件的编写
- SVG 动画(animate、animateTransform、animateMotion)