#今年三月份直接上手做的android,代码写的不规范,有问题希望指出,谢谢(app数英)

类似于微信 图片浏览的效果,我的做法是在两个activity A\B之间传递图片的位置信息

思路:在activity A的list view上有一张图片,通过方法获取到此image view相对于 window 的坐标(也就是 距离手机屏幕上侧和左侧的距离),然后将这些参数传递给 activity B,此时activity B创建一个 image view,image view的宽高是 activity A 里点击的图片的宽高,然后设置 margin left margin top,此时就造成一种假象(activity a 的图片直接传递到了 activity B),下面就是 缩放代码

注意:根据你的代码 可能 activity a 里边计算出来的 上侧距离可能要减去 活着加上 状态条的高度,具体根据个人代码判断。

上边的 gif 只是粗略的演示,如有疑问,可以留言 一同解决

下边是部分主要代码:

#activity A

//获取上边距,左边距,以及图片宽高

//可能几个人计算出的margintop要减去 状态栏高度

int[] position = new int[2];

headerImageV.getLocationInWindow(position);

int margin_top = position[1];

int margin_left = position[0];

int width = headerImageV.getWidth();

int height = headerImageV.getHeight();

Intent intent = new Intent(getActivity(), EnlargeimagevActivity.class);

intent.putExtra(EnlargeimagevActivity.IMG_URL, personModel.getAvatar_320());startActivity(intent);

//由于是在已发布的项目上更改的代码,我这只是简单的演示, 所以没有做参数传递, 直接在b页面写死的

#activity B

//由于我使用的第三方库 PhotoView(处理图片放大缩小),实际上我的图片并不是正方形(我这边放大的图片和手机的比例一样),所以下边高度及 缩放比例的计算会出现不同

final int width = 495;

final int height = (int)((float)Constant.getScreenHeight(this)/Constant.getScreenWidth(this) * width);

final int mar_left = 45;

final int mar_top = 1030;

RelativeLayout.LayoutParams para = new RelativeLayout.LayoutParams(width, height);

para.leftMargin = mar_left;

para.topMargin = mar_top - (height/2 - width/2);

layout.addView(bigImage, para);

//水平 和 竖直方向上的 偏转量,一定要设置

bigImage.setPivotX(0f);

bigImage.setPivotY(0f);

final float startScale = (float)width / Constant.getScreenWidth(this);

final float startHeightScale = ((float)height / Constant.getScreenHeight(this));

//AnimationSet提供了一个把多个动画组合成一个组合的机制,并可设置组中动画的时序关系,如同时播放,顺序播放等

//解释,2秒内 bigimage 的x由 mar_left 到0;

//bigimage的y由mar_top到0;

//然后缩放比例

//起初我写的是//with(ObjectAnimator.ofFloat(bigImage,View.SCALE_X,startScale,1f)).

//发现并没有效果, 我一直以为 最大只能1f,后来实验下才知道

//如有错误,请指出

AnimatorSet set = new AnimatorSet();

set.play(ObjectAnimator.ofFloat(bigImage,View.X,mar_left,0)).

with(ObjectAnimator.ofFloat(bigImage, View.Y, mar_top - (height / 2 - width / 2), 0)).

with(ObjectAnimator.ofFloat(bigImage,View.SCALE_X,startScale*(1/startScale),1f*(1/startScale))).

with(ObjectAnimator.ofFloat(bigImage, View.SCALE_Y, startHeightScale * (1 / startHeightScale), 1f * (1 / startHeightScale)));

set.setDuration(2000);

set.setInterpolator(new DecelerateInterpolator());

set.start();

//点击缩小,返回 activity A

Constant.bindImage(bigImage, imgurl, false);

bigImage.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {

@Override

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

AnimatorSet set = new AnimatorSet();

set.play(ObjectAnimator.ofFloat(bigImage,View.X,0,mar_left)).

with(ObjectAnimator.ofFloat(bigImage,View.Y, 0,mar_top - (height/2 - width/2))).

with(ObjectAnimator.ofFloat(bigImage,View.SCALE_X,1f*(1/startScale),startScale*(1/startScale))).

with(ObjectAnimator.ofFloat(bigImage,View.SCALE_Y,1f*(1/startHeightScale),startHeightScale*(1/startHeightScale)));

set.setDuration(2000);

set.setInterpolator(new DecelerateInterpolator());

set.addListener(new AnimatorListenerAdapter() {

@Override

public void onAnimationEnd(Animator animation) {

super.onAnimationEnd(animation);

finish();

overridePendingTransition(R.anim.slide_other, R.anim.slide_other);

}

@Override

public void onAnimationCancel(Animator animation) {

super.onAnimationCancel(animation);

}

});

set.start();

}});

java 如何放大动画图,Android仿微信图片放大动画相关推荐

  1. Android仿微信头像放大效果

    android仿微信头像放大效果,使用Dialog+Gallery 实现 1.  dialog显示时的动画style,动画可以自己根据喜好自己设置,此处动画xml省略 <style name=& ...

  2. android 点击图片动画效果,Android仿微信图片点击全屏效果

    废话不多说,先看下Android图片点击全屏效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Inten ...

  3. android点击加号,Android仿微信图片上传带加号且超过最大数隐藏功能

    1.仿照微信空间上传图片,显示图片数量以及超过最大,上传按钮隐藏功能 2.上效果图 3.上代码,主要是Adapter类 /** * Created by zhangyinlei on 2018/3/2 ...

  4. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 如果不知道如何上传 ...

  5. android仿微信图片上传进度,android高仿微信发布动态(选择图片)

    [实例简介]Android 超高仿微信图片选择器 [实例截图] [核心代码] public class MainActivity extends Activity implements OnImage ...

  6. Android 仿微信图片选择器

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.自我介绍 这是我写的第一篇博客,首先做一下自我介绍,我去年刚毕业,大学学的是计算机专业,期间也学了一门Android相关课程,但是你懂的,一个 ...

  7. android仿微信图片选择器

    最近根据项目需求,要做一个仿微信图片选择的功能.首先我们先来整理一下思路. 1.显示选择图片的界面 1.1选择的图片数量小于9 最后一张图片是一个加号. 1.2选择的图片数量等于9,加号消失. 2.选 ...

  8. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  9. android仿微信图片上传进度,Android开发之模仿微信打开网页的进度条效果(高仿)...

    一,为什么说是真正的高仿? 阐述这个问题前,先说下之前网上的,各位可以复制这段字,去百度一下  "仿微信打开网页的进度条效果",你会看到有很多类似的文章,不过他们有个共同点,就是实 ...

最新文章

  1. 【物联网中间件平台-01】真正面向物联网的组态软件 YFIOs和YFHMI的前生今世
  2. 反其道而行:教人写烂代码的开源项目
  3. 第一个ilasm程序
  4. linux内核杂记(16)-系统调用(3)
  5. 【Jmeter篇】jmeter+Ant+Jenkins接口自动化测试集成之报告优化(三)
  6. java 聚合_Java 8 聚合操作详解
  7. Spring Boot基础讲解
  8. 《利用Python》进行数据分析:Numpy基础1 数组对象ndarray
  9. 49 - 算法 - Leetcode 112 路径总和 -二叉树递归 带参数一起递归
  10. 什么是缩量、放量、堆量
  11. VS2012下基于Glut 矩阵变换示例程序:
  12. java简单增删改查_JAVA JDBC 简单的增删改查
  13. 2021年第十二届蓝桥杯javaB组真题及部分答案
  14. 信息安全管理体系--建立
  15. 数独大师级技巧_数独入门:你必须掌握的那些规则和技巧
  16. 大数据薪水大概多少_大数据就业岗位有哪些?薪资多少?
  17. ​如何恢复回收站清空的文件?
  18. iRelax for Mac(定时休息提醒工具)
  19. 翻译: 欧盟除了GDPR, 再出人工智能法Artificial Intelligence Act
  20. 怎么选择关键词以及关键词分析优化

热门文章

  1. c语言静态变量存在堆还是栈,c 类 static 函数 什么样是静态变量?嵌入式C语言的堆栈管理如何实现...
  2. 13新功能_新功能简介|MySQL8.0数据查询脱敏
  3. MyBatis-Plus_Condition作用
  4. idea全局搜索快捷鍵ctrl+shift+F失效
  5. 随手写个二分查找算法【Java】
  6. 计算机应用基础抢答题,计算机应用基础问答题
  7. python open函数参数newline_Python open() 函数
  8. 前端详细设计文档怎么写_UI设计师简历应该怎么写?
  9. 通过docker无法访问到tomcat报页面404
  10. BugkuCTF-MISC题隐写2