Android图片自动轮换 点击跳转

本文介绍了如何在Android应用中使用ViewPager配合Timer和TimerTask实现图片的自动轮换功能,并在用户点击时触发跳转至其他Activity。
摘要由CSDN通过智能技术生成
<androidx.viewpager.widget.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android.layout_height="match_parent" />

在Android中实现图片自动轮换并在点击时跳转可以使用ViewPager结合TimerTimerTask来实现。以下是一个简单的实现示例:

  1. 在布局文件中添加ViewPager

 
 

<androidx.viewpager.widget.ViewPager

android:id="@+id/viewPager"

android:layout_width="match_parent"

android.layout_height="match_parent" />

  1. 创建一个PagerAdapter来管理图片的展示:

 
 

public class ImageAdapter extends PagerAdapter {

private Context context;

private List<Integer> images;

public ImageAdapter(Context context, List<Integer> images) {

this.context = context;

this.images = images;

}

@Override

public int getCount() {

return images.size();

}

@Override

public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {

return view == object;

}

@NonNull

@Override

public Object instantiateItem(@NonNull ViewGroup container, int position) {

ImageView imageView = new ImageView(context);

imageView.setImageResource(images.get(position));

container.addView(imageView);

return imageView;

}

@Override

public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

container.removeView((View) object);

}

}

  1. ActivityFragment中设置ViewPager和轮换逻辑:

 
 

public class MainActivity extends AppCompatActivity {

private ViewPager viewPager;

private ImageAdapter adapter;

private Timer timer;

private TimerTask task;

private List<Integer> images = Arrays.asList(R.drawable.image1, R.drawable.image2, R.drawable.image3);

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

viewPager = findViewById(R.id.viewPager);

adapter = new ImageAdapter(this, images);

viewPager.setAdapter(adapter);

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override

public void onPageSelected(int position) {

// 轮换时可以添加动画或其他逻辑

}

@Override

public void onPageScrollStateChanged(int state) {

}

});

viewPager.setOnClickListener(v -> {

// 点击时跳转

Intent intent = new Intent(this, OtherActivity.class);

startActivity(intent);

});

// 自动轮换逻辑

timer = new Timer();

task = new TimerTask() {

@Override

public void run() {

runOnUiThread(() -> {

int current = viewPager.getCurrentItem();

int next = (current + 1) % images.size();

viewPager.setCurrentItem(next);

});

}

};

timer.schedule(task, 3000, 3000); // 开始轮换,初始延迟3秒,之后每3秒轮换一次

}

@Override

protected void onDestroy() {

super.onDestroy();

// 清理资源

timer.cancel();

task.cancel();

timer = null;

task = null;

}

}

在上述代码中,TimerTimerTask用于实现图片的自动轮换,每3秒钟轮换一次。点击ViewPager时,我们通过启动一个新的Activity来模拟跳转。记得在onDestroy中取消定时任务以避免内存

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Android屏保程序,可以自动轮换展示本地图片: 1. 首先,在Android Studio中创建一个新的Android项目,然后创建一个新的Activity,命名为ScreenSaverActivity。 2. 在ScreenSaverActivity的布局文件中添加一个ImageView控件,用于展示图片: ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop"/> </RelativeLayout> ``` 3. 在ScreenSaverActivity中,获取本地图片的路径列表: ``` private List<String> getImagePaths() { List<String> paths = new ArrayList<>(); File[] files = new File(Environment.getExternalStorageDirectory(), "Pictures").listFiles(); for (File file : files) { if (file.isFile() && file.getName().endsWith(".jpg")) { paths.add(file.getAbsolutePath()); } } return paths; } ``` 此方法会在Pictures文件夹中查找所有的.jpg格式图片,并返回它们的绝对路径列表。 4. 在ScreenSaverActivity中,创建一个定时器,每隔一段时间自动切换图片: ``` private Timer mTimer; private int mCurrentIndex = 0; private void startTimer() { mTimer = new Timer(); mTimer.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { List<String> paths = getImagePaths(); if (paths.size() > 0) { mCurrentIndex = (mCurrentIndex + 1) % paths.size(); String path = paths.get(mCurrentIndex); Bitmap bitmap = BitmapFactory.decodeFile(path); ImageView imageView = findViewById(R.id.imageView); imageView.setImageBitmap(bitmap); } } }); } }, 0, 5000); // 每隔5秒钟切换一次图片 } ``` 此方法会创建一个定时器,每隔5秒钟切换一次图片图片切换逻辑是,先获取所有图片的路径列表,然后根据当前的索引值选取一张图片进行展示。 5. 最后,在ScreenSaverActivity的onCreate()方法中,启动定时器: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen_saver); startTimer(); } ``` 到此为止,一个简单的Android屏保程序就完成了。在屏幕长时间无操作后,系统会自动启动ScreenSaverActivity,并展示本地图片图片会每隔5秒钟自动切换一次。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值