【问题标题】:Hide View after View finishes its job XamarinView 完成工作后隐藏 View Xamarin
【发布时间】:2021-03-19 14:56:02
【问题描述】:

我正在尝试这个在屏幕上显示 Confetti 的新 Konfetti View,可在此处找到: https://github.com/DanielMartinus/Konfetti

我希望在 Confetti 停止下落后此视图消失,但是使用我目前的代码,Konfetti 视图在 Confetti 开始下落之前就消失了。

ConfettiActivity:

using System;
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using Android.Text;
using Android.Views;
using Android.Widget;
using NL.DionSegijn.Konfetti;
using NL.DionSegijn.Konfetti.Models;

namespace ConfettiTest
{
    [Activity(Label = "ConfettiActivity")]
    public class ConfettiActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.confetti_activity);
            KonfettiView konfettiView = (KonfettiView)FindViewById(Resource.Id.viewKonfetti);
            int num = 0;
            while (num != 2)
            {
                if (num == 0)
                {
                    konfettiView
                    .Build()
                    .AddColors(Color.Yellow, Color.Green, Color.Magenta)
                    .SetDirection(0.0, 359.0)
                    .SetSpeed(1f, 5f)
                    .SetFadeOutEnabled(true)
                    .SetTimeToLive(4000L)
                    .AddSizes(new Size(12, 5f))
                    .StreamFor(400, 4000L);
                }
                else if (num == 1)
                {
                    konfettiView.Visibility = ViewStates.Gone;
                }
                else
                {
                }
                num++;
            }
        }
    }
}

confetti_activity.xml:

<?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="match_parent"
    android:orientation="vertical">
    <nl.dionsegijn.konfetti.KonfettiView
        android:id="@+id/viewKonfetti"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:text="Confetti is finished"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/confettifinished"
        android:textSize="50px"/>
</LinearLayout>

这个答案:https://stackoverflow.com/a/6690607/13370965 不起作用,因为在我的正确代码中,我有超过 1 个文本视图。

另一种选择是将 konfettiView 放在后台,这样您就可以同时看到 textViews 和五彩纸屑,但我也不知道该怎么做。

【问题讨论】:

    标签: c# xml android-layout xamarin.android android-view


    【解决方案1】:

    您可以使用计时器仅在一定时间内显示视图。

    可能看起来像这样:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.confetti_activity);
    
        KonfettiView konfettiView = (KonfettiView)FindViewById(Resource.Id.viewKonfetti);
    
        konfettiView
        .Build()
        .AddColors(Color.Yellow, Color.Green, Color.Magenta)
        .SetDirection(0.0, 359.0)
        .SetSpeed(1f, 5f)
        .SetFadeOutEnabled(true)
        .SetTimeToLive(4000L)
        .AddSizes(new Size(12, 5f))
        .StreamFor(400, 4000L);
    
        //Create and run a timer
        Device.StartTimer (new TimeSpan (0, 0, 5000), () =&gt; //(5000 = 5sec)
        {
           Device.BeginInvokeOnMainThread (() =&gt; 
           {
              //Hide the konfetti
              konfettiView.Visibility = ViewStates.Gone;
           });
           return false;
        });          
    }
    

    【讨论】:

    • System.Windows.Forms,不存在
    • Tick 也不存在。有其他选择吗?
    • @dan51 我的错。我自己从未使用过 Xamarin,但我更新了代码。现在它应该可以工作了。
    • =&gt 是做什么的?
    • 这仍然对我不起作用,因为我无法访问设备
    猜你喜欢
    • 2020-07-30
    • 2015-07-03
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多