用于自我显示的图片库代码:在 C# 中用于 android 应用程序

Image Gallery code for self display: in C# for android Application

我想为 Android 的 Gallery App 寻求一些帮助, 我在 C# 中使用了 Visual studio 2019,我成功地制作了代码 2 按钮“下一个”和“上一个” 但是对于“开始”,我无法将其编码为自我展示图片和幻灯片放映: 请在此处找到完整代码:

using Android.App;
using Android.OS;
using AndroidX.AppCompat.App;
using Android.Widget;
using System;
namespace Gallery
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
int[] imageTab;
int counter = 0;
Button btnPREVIOUS, btnNEXT, btnSTART;
ImageView imageView;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);

btnPREVIOUS = FindViewById<Button>(Resource.Id.btnPREVIOUS);
btnNEXT = FindViewById<Button>(Resource.Id.btnNEXT);
btnSTART = FindViewById<Button>(Resource.Id.btnSTART);
imageView = FindViewById<ImageView>(Resource.Id.imageView1);
imageTab = new int[4];
imageTab[0] = Resource.Drawable.img1;
imageTab[1] = Resource.Drawable.img2;
imageTab[2] = Resource.Drawable.img3;
imageTab[3] = Resource.Drawable.img4;

btnNEXT.Click += ButtonClicked;
btnPREVIOUS.Click += ButtonClicked;
btnSTART.Click += ButtonClicked;

}

private void ButtonClicked2(object sender, EventArgs e)
{

if (timer.Enabled)
{
           
btnSTART.Text = "Start Slideshow";
// initialize it in the constructor to fire every 2s
timer = new Timer(2000);
// Hook up the Elapsed event for the timer. 
timer.Elapsed += OnTimedEvent;
timer.AutoReset = true;
timer.Enabled = !timer.Enabled;

}
else
{
btnSTART.Text = "Stop Slideshow";
timer.Stop();

}

}

private void ButtonClicked(object sender, EventArgs e)
{
Button btn = (Button)sender;
switch (btn.Id)
{
case (Resource.Id.btnNEXT):
{
if (counter < imageTab.Length - 1) counter++;
else counter = 0;
imageView.SetImageResource(imageTab[counter]);
}
break;
case (Resource.Id.btnPREVIOUS):
                {
if (counter > 0) counter--; else counter = 
imageTab.Length - 1;
imageView.SetImageResource(imageTab[counter]);
}
break;
}
}
}
}

I am missing this that one with red encircled

首先,创建一个计时器

using System.Timers;

// declare it in your class
Timer timer;

// initialize it in the constructor to fire every 2s
timer = new Timer(2000);
// Hook up the Elapsed event for the timer. 
timer.Elapsed += OnTimedEvent;
timer.AutoReset = true;

然后创建 Elapsed 处理程序

private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
   // increment counter and display image
   counter++;
   if (counter >= imageTab.Length) counter = 0;
   imageView.SetImageResource(imageTab[counter]);
}

最后,单击按钮时切换计时器

private void ToggleTimer(object sender, EventArgs a)
{
   If (timer.Enabled)
    {
        timer.Stop();
    } else {
        timer.Start();
    }
   }

并将其分配给您的按钮

btnSTART.Click += ToggleTimer;