日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...

發布時間:2023/11/27 Android 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android圖片框架photoview如何記住狀態并還原,包括縮放度,縮放后的移動的距離等等,嘗試了好多方法都沒有作用。

private void generateImages() {

for (int i = 0; i < imagesEntities.size(); i++) {

// PhotoViewAttacher attacher;

final ImagesEntity entity = imagesEntities.get(i);

final float scale = entity.getScale();

final float offsetX = entity.getImageOffsetX() / 100 * screenWidth;

final float offsetY = entity.getImageOffsetY() / 100 * screenWidth;

// final float offsetX = entity.getImageOffsetX();

// final float offsetY = entity.getImageOffsetY();

int w = calculate(entity.getWidth(), screenWidth);

int h = calculate(entity.getHeight(), screenWidth);

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(w != 0 ? w

: WIDTH, h != 0 ? h : HEIGHT);

layoutParams.leftMargin = calculateMargin(entity.getCenterX(), entity.getWidth(),

screenWidth);

layoutParams.topMargin = calculateMargin(entity.getCenterY(), entity.getHeight(),

screenWidth);

final PhotoView photoView = new PhotoView(act);

// attacher = new PhotoViewAttacher(photoView);

photoView.setRotation(entity.getDegree());

// photoView.setScaleType(ImageView.ScaleType.CENTER_CROP);

String image = imagesEntities.get(i).getImage();

Bitmap bitmap;

if (image.contains("http") || image.contains("content") || image.contains("storage")) {

BitmapUtils.loadBitmapNoCenterCrop(act, image, photoView);

} else {

bitmap = Base64Util.base64ToBitmap(image);

photoView.setImageBitmap(bitmap);

}

photoView.setTag(R.id.tag_int, i);

photoView.setTag(R.id.tag_int2, entity);

photoView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {

@Override

public void onPhotoTap(View v, float x, float y) {

mPhotoView = photoView;

mPopupWindow.showAsDropDown(v, v.getWidth() / 2, -v.getHeight() / 2);

}

@Override

public void onOutsidePhotoTap() {

showToast("photo_tab_outside");

}

});

// photoView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver

// .OnGlobalLayoutListener() {

// @Override

// public void onGlobalLayout() {

// if (photoView.getDrawable() == null) {

// return;

// }

// photoView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

// Matrix matrix = new Matrix();

// matrix.setValues(new float[]{scale, 0.0f, offsetX, 0.0f, scale, offsetY, 0f, 0.0f, 1.0f});

// matrix.postScale(scale, scale);

// matrix.postTranslate(offsetX, offsetY);

// photoView.setDisplayMatrix(matrix);

// }

// });

// photoView.post(new Runnable() {

// @Override

// public void run() {

// photoView.setScale(3, false);

// LogUtils.d("setScale: " + scale);

// }

// });

photoView.setOnScaleChangeListener(new PhotoViewAttacher.OnScaleChangeListener() {

@Override

public void onScaleChange(float scaleFactor, float focusX, float focusY) {

entity.setScale(scaleFactor);

// entity.setImageOffsetX(focusX);

// entity.setImageOffsetY(focusY);

int position = (int) photoView.getTag(R.id.tag_int);

imagesEntities.set(position, entity);

pagesEntity.setImages(imagesEntities);

LogUtils.d(pagesEntity.toString());

}

});

// photoView.setOnMatrixChangeListener(new PhotoViewAttacher.OnMatrixChangedListener() {

// @Override

// public void onMatrixChanged(RectF rect) {

// Matrix matrix = photoView.getDisplayMatrix();

// float[] floats = new float[9];

// matrix.getValues(floats);

//

// float scale = floats[0];

// float offsetX = floats[2] / screenWidth * 100;

// float offsetY = floats[5] / screenWidth * 100;

//

// LogUtils.d(matrix.toString());

// LogUtils.d("scale: " + scale + " x: " + offsetX + " y: " + offsetY);

// entity.setScale(scale);

// entity.setImageOffsetX((int) offsetX);

// entity.setImageOffsetY((int) offsetY);

// int position = (int) photoView.getTag(R.id.tag_int);

// imagesEntities.set(position, entity);

// pagesEntity.setImages(imagesEntities);

// LogUtils.d(pagesEntity.toString());

//

// }

// });

container.addView(photoView, layoutParams);

photoViewContainer.put(i, photoView);

}

}

總結

以上是生活随笔為你收集整理的android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:android layout后还原位置,Android图片框