冲刺十

今天做了什么:为了界面的更加好看,我最后选择加一个动态的自动切图部件,实行按图片的滚动,显示一些新闻资讯。

<androidx.viewpager.widget.ViewPager
android:id="@+id/loopviewpager"
android:layout_width="350dp"
android:layout_height="249dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.49"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_take"
app:layout_constraintVertical_bias="0.0" />

<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#33000000"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="@+id/loopviewpager">

<!-- 标题-->
<TextView
android:id="@+id/loop_dec"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:textColor="@android:color/white" />

<!-- 小圆点-->
<LinearLayout
android:id="@+id/ll_dots_loop"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:orientation="horizontal" />

</LinearLayout>
前端部件
package com.example.vastland;


import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;

class LoopViewAdapter extends PagerAdapter {

private ArrayList<ImageView> imageViewList;

public LoopViewAdapter(ArrayList<ImageView> mImgList){
imageViewList = mImgList;
}

// 1. 返回要显示的条目内容, 创建条目

@Override
public Object instantiateItem( ViewGroup container, int position) {
// container: 容器: ViewPager
// position: 当前要显示条目的位置 0 -> 4
//newPosition = position % 5
int newPosition = position % imageViewList.size();
ImageView img = imageViewList.get(newPosition);
// a. 把View对象添加到container中
container.addView(img);
// b. 把View对象返回给框架, 适配器
return img;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}

@Override
public int getCount() {
return Integer.MAX_VALUE; //返回一个无限大的值,可以 无限循环!!!!!
}

/**
* 判断是否使用缓存, 如果返回的是true, 使用缓存. 不去调用instantiateItem方法创建一个新的对象
*/
@Override
public boolean isViewFromObject( View view,Object o) {
return view == o ;
}
}这个类实现循环切换

 效果图

 
posted @ 2024-06-02 19:41  ZzHhyao  阅读(10)  评论(0)    收藏  举报