ITPub博客

首页 > 移动开发 > ANDROID > XamarinAndroid组件教程RecylerView适配器设置动画示例

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

原创 ANDROID 作者:大学霸 时间:2018-06-13 10:20:29 0 删除 编辑

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文件,添加以下代码:


点击(此处)折叠或打开

  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 RecylerViewAnimatorsAdapter
  14. {
  15.     class DataAdapter : RecyclerView.Adapter
  16.     {
  17.         Context context;
  18.         List<string> dataset;
  19.         public DataAdapter(Context context, List<string> dataset)
  20.         {
  21.             this.context = context;
  22.             this.dataset = dataset;
  23.         }
  24.         //子元素的个数
  25.         public override int ItemCount
  26.         {
  27.             get
  28.             {
  29.                 return dataset.Count;
  30.             }
  31.         }
  32.         //返回一个自定义的ViewHolder
  33.         public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
  34.         {
  35.             var v = LayoutInflater.From(context).Inflate(Resource.Layout.layout_list_item, parent, false);
  36.             return new ViewHolder(v);
  37.         }
  38.         //填充onCreateViewHolder()方法返回的ViewHolder中的控件
  39.         public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
  40.         {
  41.             var h = (ViewHolder)holder;
  42.             Picasso.With(context).Load(Resource.Drawable.image).Into(h.Image);
  43.             h.Text.Text = dataset[position];
  44.         }
  45.         private class ViewHolder : RecyclerView.ViewHolder
  46.         {
  47.             public ImageView Image { get; private set; }
  48.             public TextView Text { get; private set; }
  49.             public ViewHolder(View itemView)
  50.                 : base(itemView)
  51.             {
  52.                 Image = itemView.FindViewById<ImageView>(Resource.Id.image);
  53.                 Text = itemView.FindViewById<TextView>(Resource.Id.text);
  54.             }
  55.         }
  56.     }
  57. }

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


点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.               android:orientation="vertical"
  4.               android:layout_width="match_parent"
  5.               android:layout_height="match_parent"
  6.               android:background="#FFFFFF">
  7.   <android.support.v7.widget.RecyclerView
  8.        android:id="@+id/list"
  9.        android:layout_width="match_parent"
  10.        android:layout_height="match_parent"/>
  11. </LinearLayout>

(9)打开MainActivity.cs文件,在RecylerView滚动时使用适配器动画。代码如下:


点击(此处)折叠或打开

  1. using Android.App;
  2. using Android.Widget;
  3. using Android.OS;
  4. using Android.Support.V7.Widget;
  5. using System.Linq;
  6. using RecyclerViewAnimators.Adapters;
  7. using Android.Views.Animations;
  8. namespace RecylerViewAnimatorsAdapter
  9. {
  10.     [Activity(Label = "RecylerViewAnimatorsAdapter", MainLauncher = true, Icon = "@mipmap/icon")]
  11.     public class MainActivity : Activity
  12.     {
  13.         static readonly string[] data = {
  14.             "Apple", "Ball", "Camera", "Day", "Egg", "Foo", "Google", "Hello", "Iron", "Japan", "Coke",
  15.             "Dog", "Cat", "Yahoo", "Sony", "Canon", "Fujitsu", "USA", "Nexus", "LINE", "Haskell", "C++",
  16.             "Java", "Go", "Swift", "Objective-c", "Ruby", "PHP", "Bash", "ksh", "C", "Groovy", "Kotlin",
  17.             "Chip", "Japan", "U.S.A", "San Francisco", "Paris", "Tokyo", "Silicon Valley", "London",
  18.             "Spain", "China", "Taiwan", "Asia", "New York", "France", "Kyoto", "Android", "Google", "C#",
  19.             "iPhone", "iPad", "iPod", "Wasabeef", "Xamarin", "South Africa", "Cape Town", "Microsoft"
  20.         };
  21.         protected override void OnCreate(Bundle savedInstanceState)
  22.         {
  23.             base.OnCreate(savedInstanceState);
  24.             SetContentView(Resource.Layout.Main);
  25.             var recyclerView = FindViewById<RecyclerView>(Resource.Id.list);
  26.             recyclerView.SetLayoutManager(new LinearLayoutManager(this));
  27.             var adapter = new DataAdapter(this, data.ToList());
  28.             var alphaAdapter = new AlphaInAnimationAdapter(adapter); //创建适配器动画
  29.             var scaleAdapter = new ScaleInAnimationAdapter(alphaAdapter); //创建复合适配器动画
  30.             scaleAdapter.SetFirstOnly(false); //不是显示一次动画效果
  31.             scaleAdapter.SetInterpolator(new OvershootInterpolator()); //设置插值器
  32.             recyclerView.SetAdapter(scaleAdapter); //设置适配器
  33.         }
  34.     }
  35. }

运行程序后,初始状态如图1.3所示。当滚动子元素后,会看到动画效果。

图1.3  初始状态

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29597077/viewspace-2156085/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-04-09

  • 博文量
    1047
  • 访问量
    990333