Android(安卓)图片预览模仿朋友圈查看图片效果放大图片,左右滑动 - transferee
16lz
2022-05-22
描述:
效果图:
使用框架:transferee 来实现
这里采用的是transferee的glide方法:https://github.com/Hitomis/transferee/blob/master/app/src/main/java/com/hitomi/transferimage/activity/glide/GlideNoThumActivity.java
代码:
Gradle引入jar包:
compile 'com.github.Hitomis.transferee:Transferee:v1.1.0' compile 'com.github.Hitomis.transferee:GlideLoader:v1.1.0'
GlideNoThumActivity.java类:
package com.hitomi.transferimage.activity.glide;import android.view.View;import android.widget.GridView;import android.widget.ImageView;import android.widget.Toast;import com.bumptech.glide.Glide;import com.bumptech.glide.request.RequestOptions;import com.hitomi.tilibrary.style.index.NumberIndexIndicator;import com.hitomi.tilibrary.style.progress.ProgressPieIndicator;import com.hitomi.tilibrary.transfer.TransferConfig;import com.hitomi.tilibrary.transfer.Transferee;import com.hitomi.transferimage.R;import com.hitomi.transferimage.activity.BaseActivity;import com.wepie.glide4loader.Glide4ImageLoader;import com.zhy.adapter.abslistview.CommonAdapter;import com.zhy.adapter.abslistview.ViewHolder;import java.util.ArrayList;public class GlideNoThumActivity extends BaseActivity { private RequestOptions options; { sourceImageList = new ArrayList<>(); sourceImageList.add("http://t2.27270.com/uploads/tu/201706/9999/d38274f15c.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201706/9999/061548f1fb.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201706/9999/4a85dd9bd9.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201706/9999/a6c57f438d.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201706/9999/b6ae25c618.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201612/562/lua4uwojfds.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201612/562/4hp4d1fcocu.jpg"); sourceImageList.add("http://t2.27270.com/uploads/tu/201612/562/d2madqozild.jpg"); sourceImageList.add("http://ww1.sinaimg.cn/large/9be2329dgw1etlyb1yu49j20c82p6qc1.jpg"); } @Override protected int getContentView() { return R.layout.activity_grid_view; } @Override protected void initView() { gvImages = (GridView) findViewById(R.id.gv_images); } @Override protected void testTransferee() { config = TransferConfig.build() .setSourceImageList(sourceImageList) .setMissPlaceHolder(R.mipmap.ic_empty_photo) .setErrorPlaceHolder(R.mipmap.ic_empty_photo) .setProgressIndicator(new ProgressPieIndicator()) .setIndexIndicator(new NumberIndexIndicator()) .setJustLoadHitImage(true) .setImageLoader(Glide4ImageLoader.with(getApplicationContext())) .setOnLongClcikListener(new Transferee.OnTransfereeLongClickListener() { @Override public void onLongClick(ImageView imageView, int pos) { saveImageByUniversal(imageView); } }) .create(); options = new RequestOptions().centerCrop() .placeholder(R.mipmap.ic_empty_photo); gvImages.setAdapter(new NineGridAdapter()); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode != WRITE_EXTERNAL_STORAGE) { Toast.makeText(this, "请允许获取相册图片文件写入权限", Toast.LENGTH_SHORT).show(); } } private class NineGridAdapter extends CommonAdapter
{ public NineGridAdapter() { super(GlideNoThumActivity.this, R.layout.item_grid_image, sourceImageList); } @Override protected void convert(ViewHolder viewHolder, final String item, final int position) { ImageView imageView = viewHolder.getView(R.id.image_view); Glide.with(GlideNoThumActivity.this) .load(item) .apply(options) .into(imageView); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { config.setNowThumbnailIndex(position); config.setOriginImageList(wrapOriginImageViewList(sourceImageList.size())); transferee.apply(config).show(new Transferee.OnTransfereeStateChangeListener() { @Override public void onShow() { Glide.with(GlideNoThumActivity.this).pauseRequests(); } @Override public void onDismiss() { Glide.with(GlideNoThumActivity.this).resumeRequests(); } }); } }); } }protected List wrapOriginImageViewList(int size) { List originImgList = new ArrayList<>(); for (int i = 0; i < size; i++) { ImageView thumImg = (ImageView) ((LinearLayout) gridview.getChildAt(i)).getChildAt(0); originImgList.add(thumImg); } return originImgList; }}
ฅ՞•ﻌ•՞ฅ ~ 厚着脸皮要个赞赏哈 ~ ฅ՞•ﻌ•՞ฅ
更多相关文章
- Android(安卓)渐变色沉浸式状态栏
- android存取数据方式:文件、SharedPreferences
- [Android]自定义弹幕View
- Android(安卓)全屏与沉浸式
- Android之系统自带的文字外观设置及实际显示效果图
- Android(安卓)开源项目分类汇总
- Android(安卓)轻量级存储方案的前世今生
- 关于android 4.4 以上写入外部存储卡
- 获取Android(安卓)System 写入权限