- 工具栏添加背景切换按钮,点击弹出对话框 - 支持三种背景模式:灰白相间、全白、全黑 - 背景设置持久化保存,应用重启后保持原设置 - 切换背景时保持当前浏览的图片位置
72 lines
2.2 KiB
Java
72 lines
2.2 KiB
Java
package cc.winboll.studio.gallery;
|
|
|
|
import android.net.Uri;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.viewpager.widget.PagerAdapter;
|
|
import com.bumptech.glide.Glide;
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
import java.util.ArrayList;
|
|
|
|
import cc.winboll.studio.libappbase.LogUtils;
|
|
|
|
public class ImagePagerAdapter extends PagerAdapter {
|
|
public static final String TAG = "ImagePagerAdapter";
|
|
private ArrayList<Uri> imageUrls;
|
|
private int bgType;
|
|
|
|
public ImagePagerAdapter(ArrayList<Uri> imageUrls, int bgType) {
|
|
this.imageUrls = imageUrls;
|
|
this.bgType = bgType;
|
|
LogUtils.d(TAG, "ImagePagerAdapter created with " + imageUrls.size() + " images, bgType=" + bgType);
|
|
}
|
|
|
|
private int getBgRes() {
|
|
switch (bgType) {
|
|
case 0:
|
|
return R.drawable.bg_checkerboard;
|
|
case 1:
|
|
return R.drawable.bg_white;
|
|
case 2:
|
|
return R.drawable.bg_black;
|
|
default:
|
|
return R.drawable.bg_checkerboard;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return imageUrls.size();
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
|
View view = LayoutInflater.from(container.getContext())
|
|
.inflate(R.layout.item_image_pager, container, false);
|
|
view.setBackgroundResource(getBgRes());
|
|
ImageView imageView = view.findViewById(R.id.image);
|
|
|
|
Glide.with(imageView.getContext())
|
|
.load(imageUrls.get(position))
|
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
|
.skipMemoryCache(true)
|
|
.into(imageView);
|
|
|
|
container.addView(view);
|
|
return view;
|
|
}
|
|
|
|
@Override
|
|
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
|
|
container.removeView((View) object);
|
|
}
|
|
|
|
@Override
|
|
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
|
|
return view == object;
|
|
}
|
|
} |