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<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];
}
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.RecyclerView
android: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适配器设置动画示例的更多相关文章
- XamarinAndroid组件教程RecylerView适配器设置动画
XamarinAndroid组件教程RecylerView适配器设置动画 本小节将讲解动画相关设置,如动画的时长.插值器以及复合动画等. 1.设置动画时长 设置动画持续的时间可以使用Animation ...
- XamarinAndroid组件教程RecylerView适配器使用动画
XamarinAndroid组件教程RecylerView适配器使用动画 为RecylerView使用RecylerViewAnimators组件中提供的适配器动画,需要使用RecyclerView类 ...
- XamarinAndroid组件教程RecylerView适配器动画动画种类
XamarinAndroid组件教程RecylerView适配器动画动画种类 本节将讲解RecylerView适配器动画,其中包含动画种类和如何使用动画. 动画种类 RecylerViewAnimat ...
- XamarinAndroid组件教程RecylerView自定义适配器动画
XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...
- XamarinAndroid组件教程RecylerView动画组件使用动画(3)
XamarinAndroid组件教程RecylerView动画组件使用动画(3) (8)打开Main.axml文件,构建主界面.代码如下: <?xml version="1.0&quo ...
- XamarinAndroid组件教程RecylerView动画组件使用动画(2)
XamarinAndroid组件教程RecylerView动画组件使用动画(2) 如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnim ...
- XamarinAndroid组件教程设置自定义子元素动画(一)
XamarinAndroid组件教程设置自定义子元素动画(一) 如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个.此时,需要让自定义的动画继 ...
- XamarinAndroid组件教程设置自定义子元素动画(二)
XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: …… usin ...
- XamarinAndroid组件教程设置动画的设置插值器
XamarinAndroid组件教程设置动画的设置插值器 为动画设置插值器,可以使用BaseItemAnimator抽象类中的SetInterpolator()方法,其语法形式如下: public v ...
随机推荐
- (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey
<Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...
- checkbox 选中的id拼接长字符串
需求描述:为了做一个批量操作,需要获取到checkbox选中的项的id,并且把选中的id拼接成字符串. 解决思路:先获取到checkbox选中项,然后拼接.(这tm不废话么),问题的关键就是获取che ...
- laravel 实现一个简单的 RESTful API
创建一个 Article 资源 php artisan make:resource Article 你可以在 app/Http/Resources 目录下看到你刚刚生成的 Article 资源 当然我 ...
- Brup Suite 渗透测试笔记(八)
续上次笔记 1.之前记到payload类型的用户名生成器,(username generator).这种类型发payload只要用于用户名和email账号的自动生成. 2.ECB加密块洗牌(ECB ...
- solt插槽简单使用实例
在父组件内可以定义方法,变量 等,还可以在父组件中使用呢. 样式可以在子组件里写,也可以在父组件写. 子组件: <template> <div class="admin-u ...
- ESD选型指南
信息来自网络,可能有误,希望指正! 一.ESD工作原理 ESD静电保护元件,又称静电抑制二极管.ESD是多个TVS晶粒或二极管采用不同的布局做成具有特定功能的多路或单路ESD保护器件,主要应用于各类通 ...
- Leetcode 344. 反转字符串
344. Reverse String 解题代码: class Solution { public: void reverseString(vector<char>& s) { , ...
- Caused by: java.lang.ClassNotFoundException: Didn't find class "io.grpc.helloworldexample.HelloworldActivity" on path: DexPathList
FAQ: Android app 编译好后安装到手机,运行时闪退,报如下错误: java.lang.RuntimeException: Unable to instantiate activity ...
- python---通过递归和动态规划策略解决找零钱问题
也是常见套路. # coding = utf-8 def rec_mc(coin_value_list, change, know_results): min_coins = change if ch ...
- 移动端:div在手机页面上随意拖动
<!doctype html> <html> <head> <title>弹窗</title> <meta charset=" ...