一个很小功能,用的不多,记录:
先上效果图:
大概就是这个样子的.
这里开始上代码:
一、StackView的使用,StackView是AdapterViewAnimator的子类,用于显示Adapter提供的一系列View。StackView会以“堆叠”的方式来显示多个列表项
主类中增加 stackview_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<StackView
android:id="@+id/stackview"
android:layout_width="150sp"
android:layout_height="100sp"
android:loopViews="true"
android:layout_gravity="center_horizontal"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<Button
android:id="@+id/prev_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一张" />
<Button
android:id="@+id/next_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一张" />
</LinearLayout>
</LinearLayout>
二、主类中使用JAVA代码
public class StackViewActivity extends AppCompatActivity implements View.OnClickListener {
private StackView mStackView = null;
private Button mPrevBtn = null;
private Button mNextBtn = null;
private int[] mImageIds = {//可添加本地图片
R.drawable.share_qr_img1, R.drawable.share_qr_img2, R.drawable.share_qr_img3, R.drawable.share_qr_img4,
R.drawable.share_qr_img5, R.drawable.share_qr_img6
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stackview_layout);
// 获取界面组件
mStackView = (StackView) findViewById(R.id.stackview);
mPrevBtn = (Button) findViewById(R.id.prev_btn);
mNextBtn = (Button) findViewById(R.id.next_btn);
List<String> mData=new ArrayList<>();
mData.add("https://cdn.weizhiyou.top/wzy/banner/20220824/1661332703000.jpg");
mData.add("https://cdn.weizhiyou.top/wzy/banner/20220824/1661332690000.jpg");
mData.add("https://cdn.weizhiyou.top/article/20220824/1661329023000.jpg");
// 为AdapterViewFlipper设置Adapter
MyStackAdapter adapter = new MyStackAdapter(this, mData);
mStackView.setAdapter(adapter);
// 为三个按钮设置点击事件监听器
mPrevBtn.setOnClickListener(this);
mNextBtn.setOnClickListener(this);
//3,使用PostDelayed方法,调用此Runnable对象
handler.postDelayed(runnable, 2000);
//4,关闭此定时器,可以这样操作
// handler.removeCallbacks(runnable);
//移除所有的消息
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.prev_btn:
// 显示上一个组件
mStackView.showPrevious();
break;
case R.id.next_btn://手动显示
// 显示下一个组件
mStackView.showNext();
break;
default:
break;
}
}
//1,首先创建一个Handler对象
Handler handler=new Handler();
//2,然后创建一个Runnable对像
Runnable runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
handler.postDelayed(this, 5000);
mStackView.showNext();
}
};
}
三、还需要一个适配器来添加图
public class StackAdapter extends BaseAdapter {
private Context mContext = null;
private int[] mImageIds = null;
private List<String> mData;
public StackAdapter(Context context, List<String> Data) {
this.mContext = context;
this.mData = Data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
// 该方法返回的View代表了每个列表项
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ImageView imageView = null;
if (null == convertView) {
// 创建一个ImageView
imageView = new ImageView(mContext);
// 设置ImageView的缩放类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// 为imageView设置布局参数
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
convertView = imageView;
} else {
imageView = (ImageView) convertView;
}
// 给ImageView设置图片资源
// imageView.setImageResource(mImageIds[position]);
Picasso.with(mContext)//加载图片地址
.load(mData.get(position))
.into(imageView, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
imageView.setOnClickListener(new View.OnClickListener() {//图片点击事件
@Override
public void onClick(View view) {
}
});
return imageView;
}
private VideoItemOnClickLister clickListener;
public void setClickListener(VideoItemOnClickLister clickListener) {
this.clickListener = clickListener;
}
}
这就是全部代码
-END