Facebook应用程序在帖子上的小图像和用户也可以缩放到它的放大模式之间有一个很好的过渡动画.
在我看来,动画不仅根据以前的位置和大小放大和移动imageView,而且还显示内容而不是拉伸imageView的内容.
这可以通过我做的下一个草图看到:

他们是如何做到的呢?他们真的有2个观点动画来揭示内容吗?
他们是如何使它变得如此流畅,就像它是一个单一的视图?
当缩略图设置为中心裁剪时,我已经看到(链接在这里)的图像被放大到全屏的唯一教程不能很好地显示.
不仅如此,它甚至可以在Android的低API上运行.
有人知道有类似能力的图书馆吗?
编辑:我找到了一个方法,并发布了一个答案,但它是基于更改layoutParams,我认为它没有效率和推荐.
我尝试过使用正常的动画和其他动画技巧,但是现在这是唯一对我有用的东西.
如果有人知道该怎么做以使其更好地工作,请写下来.
我一直在尝试放大视图,然后通过像动画一样缩小返回到原始大小。
我能够做的是将放大和缩小放在一组中,并在单击按钮时在图像视图上对其进行动画处理,但它第一次突然减小图像大小,然后在以后的单击时进行良好的动画处理。我将不胜感激任何有助于完成流畅动画的帮助
我的代码
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
>
<scale
android:duration="1000"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale=".5"
android:toYScale=".5" >
</scale>
<scale
android:duration="1000"
android:fromXScale=".5"
android:fromYScale=".5"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1" >
</scale>
</set>
Run Code Online (Sandbox Code Playgroud)
final Animation ani_in = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.zoomin_out);
imageView.startAnimation(ani_in);
Run Code Online (Sandbox Code Playgroud) 缩放动画后的视图尚未调整到新位置。
我使用 android 动画(ScaleAnimation)将布局(启动时的屏幕尺寸)缩放到自身尺寸的 0.95 倍,并且比例参考屏幕中心点。
final AnimationListener al2 = new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
}
};
public void animScale(){
ScaleAnimation sa = new ScaleAnimation(1,0.95f,1,0.95f, topLayout.getMeasuredWidth()/2, topLayout.getMeasuredHeight()/2);
sa.setDuration(500);
sa.setFillEnabled(true);
sa.setFillAfter(true);
sa.setAnimationListener(al2);
topLayout.startAnimation(sa);
}
public void onCreate(Bundle savedInstanceState) {
scaleButton = (Button) findViewById(R.id.scaleButton);
scaleButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// …Run Code Online (Sandbox Code Playgroud)