You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android C#使用ViewFlipper实现图片轮播遇类型转换错误

解决ViewFlipper动画类型转换错误的问题

先看你遇到的错误提示:无法将Android.Views.Animations.Animation转换为int,问题出在你调用SetInAnimation和SetOutAnimation的方式上,下面帮你分析并修正:

错误原因

你已经通过AnimationUtils.LoadAnimation()成功加载了Animation对象fadeIn和fadeOut,但后续调用ViewFlipper的动画设置方法时,误用了需要传入**资源ID(int类型)**的重载,同时还写错了参数名称(代码里的fade_in是未定义的变量),直接导致了类型不匹配的错误。

修正后的代码

只需要把动画设置的两行代码改成直接传入已经加载好的Animation对象即可:

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.Util;
using Android.Views;
using Android.Widget;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Support.V4.Widget;
using Android.Support.V4.App;
using System.Data;
using SupportToolbar = Android.Support.V7.Widget.Toolbar;
using Android.Views.Animations;

namespace image_slider
{
    [Activity(Label = "image_slider", MainLauncher = true, Theme = "@style/Theme.DesignDemo")]
    public class MainActivity : AppCompatActivity
    {
        private SupportToolbar mToolbar;
        Animation fadeIn, fadeOut;
        ViewFlipper viewflipper;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            mToolbar = FindViewById<SupportToolbar>(Resource.Id.toolbar);
            SetSupportActionBar(mToolbar);

            viewflipper = FindViewById<ViewFlipper>(Resource.Id.viewFlipper);

            fadeIn = AnimationUtils.LoadAnimation(this, Resource.Animation.fade_in);
            fadeOut = AnimationUtils.LoadAnimation(this, Resource.Animation.fade_out);

            // 修正这里:直接传入已加载的Animation对象
            viewflipper.SetInAnimation(fadeIn);
            viewflipper.SetOutAnimation(fadeOut);

            viewflipper.SetFlipInterval(5000);
            viewflipper.StartFlipping();
        }
    }
}

补充说明

如果你不想提前加载动画对象,也可以直接使用传入资源ID的重载方法,这时候代码应该写成:

viewflipper.SetInAnimation(this, Resource.Animation.fade_in);
viewflipper.SetOutAnimation(this, Resource.Animation.fade_out);

这种情况下就不需要提前调用AnimationUtils.LoadAnimation()了,两种方式选其一即可。

内容的提问来源于stack exchange,提问作者Jayson E Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:53