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 插件化】Hook 插件化框架 ( 合并 “插件包“ 与 “宿主“ 中的 Element[] dexElements | 设置合并后的 Element[] 数组 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- android layout布局 有哪些,Android 常用布局 介绍与使用
读前思考 学习一门技术或者看一篇文章最好的方式就是带着问题去学习,这样才能在过程中有茅塞顿开.灯火阑珊的感觉,记忆也会更深刻. 有哪些常用的布局? 每一种布局有何特点与不同? 布局上如何优化? 1. ...
- android 置顶窗口位置,Android 滑动悬浮置顶指南
我自己的xml代码,加上一些理解后的注释 xmlns:tools="http://schemas.android.com/tools" xmlns:app="http:/ ...
- 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 ...
- android 动画后的位置,Android:Comp之后会重置动画位置
Android:Comp之后会重置动画位置 我正在使用xml定义的动画将视图滑出屏幕. 问题是,动画完成后,它将立即重置为其原始位置. 我需要知道如何解决这个问题. 这是xml: 这是我用来调用它的J ...
- android linux应用安装位置,Android中App安装位置详解
Android应用可以安装在本机自带存储,同时也可以安装到外部存储(SD卡).自从API 8后也就是Android2.2后,我们能使APK安装到外部存储上.这是一个可选的特性,在工程的manifest ...
- android layout 渲染,java – 渲染android.support.design.widget.CoordinatorLayout的问题
我将 android studio升级到2.2.3后面临问题 问题是使用android.support.design.widget.CoordinatorLayout 它显示了这个错误 The fol ...
- android仿微信发送位置,Android仿微信发送位置-百度地图
[实例简介] [实例截图] [核心代码] package com.chenxuxu.baiduwechatposition; import android.app.Activity; import a ...
- android toast怎么改变位置,Android 更改 Toast 的默认位置方法
Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适.比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没 ...
最新文章
- ROS 使用参数以及相应的 .launch 文件编写
- 关于php无字母代码的研究
- 关键词匹配(Ac自动机模板题)
- 从Jenkins或Gerrit上获取拉代码和编译命令
- RuntimeError: Given groups=1, weight of size [1, 1, 3, 3], expected input[1, 3, 1402, 1200] to have
- 鸿蒙概念爆发,叶子看盘:华为鸿蒙概念爆发,这两只龙头已启动!
- 简单动态规划问题分析
- 云原生安全助力在线教育三分钟搞定安全防护
- 绘制不规则位图方法总结,多种实现方法,全面测试比较
- hive udaf_Hive自定义函数
- 《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序
- 图像3尺度全小波包分解matlab,小波包分解
- Vivado2019.2下载(官网百度云)与安装(手把手)
- Elasticsearch 集成 SpringBoot并进行CRUD操作
- Java文字转图片超出内容自动换行
- 出口法和出口管制小记
- node.js毕业设计鲸落图书商城小程序LW(源码+程序+LW+部署)
- 微信小程序vue+nodejs+uniapp家装 装修装饰公司管理系统
- ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年02月22日更新
- 微信公众平台开发(15)--群发消息
热门文章
- 振动力学基础与matlab应用_【日文好书推荐】振动与噪声控制技术for机械设计者...
- iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)
- FIN_WAIT_2
- ubuntu安装deepin terminal 终端
- Windows下安装Redis服务
- 人工智能时代,教育如何做人工智能的“弄潮儿”?
- RN Exception: Before building your project, you need to accept the license agreements and comp le...
- RHEL5 install
- 法院判决:优步无罪,无人车安全员可能面临过失杀人控诉
- Linux Shell简介