Android 长图自动循环播放

以前从来没有写博客的习惯,今天设计要让做一个引导页。就是一个很长的横图,然后从右往左慢慢播放,在播放完了之后会重新播放,当然,需求是要很连贯的效果。

接到需求之后,初步想法如下:让图片按矩阵方式放置,也就是将scaleType设置为matrix.

<ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="matrix" />
然后就是将图片,一点一点的向你所需要的方向滚动,怎么滚动呢?很简单:
iv.scrollBy(-1, 0);
这个要不要用定时器呢,我想了想,其实完全没有必要用定时器,用handler就完全可以,代码如下:

//速度 25 正好
private final Handler handler = new Handler() {
public void
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中,实现轮播图的循环播放通常会使用到库如Glide、Volley、Picasso或Android自身的RecyclerView结合Adapter来展示图片,并配合ViewFlipper、ViewPager或Lottie等组件来实现动画效果。以下是一个简单的步骤: 1. **添加依赖**: 使用Gradle添加一个轮播图库依赖,比如`androidx.recyclerview:recyclerview:1.2.1`(RecyclerView)和`com.github.bumptech.glide:glide:4.12.0`(Glide)。 2. **创建布局**: 创建一个包含RecyclerView的布局文件,RecyclerView作为轮播容器。 ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` 3. **设置Adapter**: 为RecyclerView创建一个自定义的Adapter,其中包含轮播的图片列表。 ```java public class SlideAdapter extends RecyclerView.Adapter<SlideAdapter.MyViewHolder> { private List<String> images; // ... 其他构造函数和方法 @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.slide_item, parent, false); return new MyViewHolder(itemView); } // ... 填充视图,处理点击事件和设置轮播逻辑 class MyViewHolder extends RecyclerView.ViewHolder { ImageView slideImageView; MyViewHolder(@NonNull View itemView) { super(itemView); slideImageView = itemView.findViewById(R.id.slide_image_view); } } // ... 实现滚动到下一个图片的逻辑 public void setNextImage() { if (position < images.size() - 1) { position++; } else { position = 0; // 循环开始 } notifyItemChanged(position); // 刷新当前项 } } ``` 4. **轮播逻辑**: 在你的Activity或Fragment中设置Adapter并处理滑动事件,使其在用户滑动自动切换到下一个图片。 ```java SlideAdapter adapter = new SlideAdapter(yourImageList); recyclerView.setAdapter(adapter); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (dy > 0) { // 用户上滑 adapter.setNextImage(); } } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值