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适配器设置动画示例的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

    XamarinAndroid组件教程RecylerView动画组件使用动画(2) 如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnim ...

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

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

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

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

  9. XamarinAndroid组件教程设置动画的设置插值器

    XamarinAndroid组件教程设置动画的设置插值器 为动画设置插值器,可以使用BaseItemAnimator抽象类中的SetInterpolator()方法,其语法形式如下: public v ...

随机推荐

  1. WEB漏洞 XSS(一)

    1.xss的形成原理 xss 中文名是“跨站脚本攻击”,英文名“Cross Site Scripting”.xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML ...

  2. cf29d 深搜,dfs序

    #include<bits/stdc++.h> using namespace std; #define maxn 500 ]; int n,head[maxn],tot,a[maxn], ...

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

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

  4. python+selenium十五:CSS与Jquery

    在css中,id用#表示,class用.表示,要定位标签直接写标签名,其他属性就用[xxx='xxx'] 一.css定位 1.属性定位:可以通过任意属性定位,不局限于id.class.name.tag ...

  5. AI-响应式、分页器

    响应式 如果在setting配置下列,当只有BrowsableAPIRenderer时,只会返回浏览器页面:当配置成JSONRenderer,会返回json数据 REST_FRAMEWORK={ 'D ...

  6. 使用asp.net MVC的 HtmlHelper 时遇到的小问题,报错:Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

    异常信息:Templates can be used only with field access, property access, single-dimension array index, or ...

  7. MyBatis-Plus工具快速入门

    MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...

  8. [转] 设置div的overflow:scroll,但是在手机上滑动的时候有点卡顿

    设置div的overflow:scroll,但是在手机上滑动的时候有点卡顿,所以在这个div上加一个css: -webkit-overflow-scrolling : touch; 在苹果手机上使用- ...

  9. C++类中的静态成员变量和静态成员函数的作用

    数据成员可以分为静态变量.非静态变量两种. 静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...

  10. Zookeeper(一)CentOS7.5搭建Zookeeper3.4.12集群与命令行操作

    一. 分布式安装部署 1.0 下载地址 官网首页: https://zookeeper.apache.org/ 下载地址: http://mirror.bit.edu.cn/apache/zookee ...