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如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...相关推荐

  1. 【Android 插件化】Hook 插件化框架 ( 合并 “插件包“ 与 “宿主“ 中的 Element[] dexElements | 设置合并后的 Element[] 数组 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. android layout布局 有哪些,Android 常用布局 介绍与使用

    读前思考 学习一门技术或者看一篇文章最好的方式就是带着问题去学习,这样才能在过程中有茅塞顿开.灯火阑珊的感觉,记忆也会更深刻. 有哪些常用的布局? 每一种布局有何特点与不同? 布局上如何优化? 1. ...

  3. android 置顶窗口位置,Android 滑动悬浮置顶指南

    我自己的xml代码,加上一些理解后的注释 xmlns:tools="http://schemas.android.com/tools" xmlns:app="http:/ ...

  4. convert android layout xml,详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 ${fq.content} ${fq.time} 2.XML网页效果图 3.Android代码 1.布局文件 xmlns:tools="http://schemas.an ...

  5. android 动画后的位置,Android:Comp之后会重置动画位置

    Android:Comp之后会重置动画位置 我正在使用xml定义的动画将视图滑出屏幕. 问题是,动画完成后,它将立即重置为其原始位置. 我需要知道如何解决这个问题. 这是xml: 这是我用来调用它的J ...

  6. android linux应用安装位置,Android中App安装位置详解

    Android应用可以安装在本机自带存储,同时也可以安装到外部存储(SD卡).自从API 8后也就是Android2.2后,我们能使APK安装到外部存储上.这是一个可选的特性,在工程的manifest ...

  7. android layout 渲染,java – 渲染android.support.design.widget.CoordinatorLayout的问题

    我将 android studio升级到2.2.3后面临问题 问题是使用android.support.design.widget.CoordinatorLayout 它显示了这个错误 The fol ...

  8. android仿微信发送位置,Android仿微信发送位置-百度地图

    [实例简介] [实例截图] [核心代码] package com.chenxuxu.baiduwechatposition; import android.app.Activity; import a ...

  9. android toast怎么改变位置,Android 更改 Toast 的默认位置方法

    Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适.比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没 ...

最新文章

  1. ROS 使用参数以及相应的 .launch 文件编写
  2. 关于php无字母代码的研究
  3. 关键词匹配(Ac自动机模板题)
  4. 从Jenkins或Gerrit上获取拉代码和编译命令
  5. RuntimeError: Given groups=1, weight of size [1, 1, 3, 3], expected input[1, 3, 1402, 1200] to have
  6. 鸿蒙概念爆发,叶子看盘:华为鸿蒙概念爆发,这两只龙头已启动!
  7. 简单动态规划问题分析
  8. 云原生安全助力在线教育三分钟搞定安全防护
  9. 绘制不规则位图方法总结,多种实现方法,全面测试比较
  10. hive udaf_Hive自定义函数
  11. 《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序
  12. 图像3尺度全小波包分解matlab,小波包分解
  13. Vivado2019.2下载(官网百度云)与安装(手把手)
  14. Elasticsearch 集成 SpringBoot并进行CRUD操作
  15. Java文字转图片超出内容自动换行
  16. 出口法和出口管制小记
  17. node.js毕业设计鲸落图书商城小程序LW(源码+程序+LW+部署)
  18. 微信小程序vue+nodejs+uniapp家装 装修装饰公司管理系统
  19. ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年02月22日更新
  20. 微信公众平台开发(15)--群发消息

热门文章

  1. 振动力学基础与matlab应用_【日文好书推荐】振动与噪声控制技术for机械设计者...
  2. iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)
  3. FIN_WAIT_2
  4. ubuntu安装deepin terminal 终端
  5. Windows下安装Redis服务
  6. 人工智能时代,教育如何做人工智能的“弄潮儿”?
  7. RN Exception: Before building your project, you need to accept the license agreements and comp le...
  8. RHEL5 install
  9. 法院判决:优步无罪,无人车安全员可能面临过失杀人控诉
  10. Linux Shell简介