Android 图片预览模仿朋友圈查看图片效果放大图片,左右滑动 - transferee
16lz
2021-01-23
描述:
效果图:
使用框架: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 應用框架原理與程式設計36 技有感。
- Android 网络通信框架Volley简介(Google IO 2013)
- Android快速开发框架dyh详解(三)---网络层的使用
- android 开发常用框架、组件 -UI篇
- XUI 一个简洁而又优雅的Android原生UI框架
- Android异步网络请求框架-Volley
- 【android】ORMLite框架 的使用方法---给你的数据库操作插上翅膀
- Android黑盒自动化测试框架Robotium
- Android使用okhttp框架实现带参数Get和Post请求(附服务端完整代码