高仿相冊可拖拽圖片
正常我們在使用縮放圖片跟顯示長圖的使用都是用到PhotoView跟SubsamplingScaleImageView這2個控件,我在github逛了一圈,都存在2種問題;
其一:都是基于上面2個控件進行開發(fā),會導致出現(xiàn)新的縮放控件或者更新控件會導致代碼開發(fā)不動
其二:雖然他們都能拖拽,但是在拖拽返回的時候,由于顯示是全屏,列表展示是正方形,導致圖片返回會變形或者大小不一致,導致會閃一下。
看了下iOS的相冊,跟小米的相冊,他們在拖拽返回不存在這個問題,體驗非常好;

1650426334978_1650436423802.gif
優(yōu)點:
1、不對任何縮放圖片控件進行封裝,我們只封裝拖拽功能,也就是說PhotoView跟SubsamplingScaleImageView需要自己寫在自己項目上(不會使用的可以參考demo)。
2、拖拽返回的時候,圖片不會變形,也不存在大小不一致等問題。
3、支持ViewPage跟ViewPage2隨意切換,2者的不同大家都知道就是Fragment生命周期不一樣
放慢動作效果圖:
(可以看出沒有變形,沒有閃爍實現(xiàn)無縫連接)

1650425963744_1650436423884.gif
依賴:
implementation 'com.github.yanxuwen:DragViewLayout:1.1.0'
使用方法
List<PictureData> listdata = new ArrayList<>();
List<Class<? extends Fragment>> listfragemnt = new ArrayList<>();
views.add(v1);
listfragemnt.add(MyFragment3.class);
PictureData pictureData = new PictureData(R.mipmap.longphoto, "長圖");
listdata.add(pictureData);
//啟動
new DragViewDialog.Builder(this)
.setData(listdata, listfragemnt)//設置數(shù)據(jù)
.setViewPage2(true)//是否支持ViewPage2
.setTransparentView(true)//是否挖空視圖
.setBackgroundColor(Color.parseColor("#333333"))//背景圖
.setListener(new Listener<PictureData>() {//監(jiān)聽器
/**
* 聯(lián)動View,默認為null,則不能隨意拖拽效果,只能上下滑動關(guān)閉(類似
* 與今日頭條效果)
* 因為找不可以聯(lián)動的View,
*/
@Override
public View getCurView(int position, PictureData pictureData) {
return views.get(position);
}
})
.show();