将图像缩放为新的活动

时间:2017-06-03 23:20:07

标签: android android-intent android-activity imageview

我想在点击它时将图像缩放为新的活动。 为了解决我想要实现的目标,我连续上传了一些图片。 如果通过图片很难理解,我可以尝试上传视频。 我发现的唯一的事情是this。但它仅适用于View。我想开始一个完整的新活动或对话。

有什么建议我怎么能以最好的方式做到这一点?

enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

API 14 +

我相信这个库完全符合你的要求:https://github.com/albinmathew/PreLollipopTransition(是的,你想要的是Android API的一部分,但只是来自Lollipop - 你可能也想支持更低的API,这就是这个图书馆是为了。)

编辑:原始https://github.com/takahirom/PreLollipopTransition似乎更新,所以你可能想要使用它。

有了它,你基本上可以在一个活动中做到这一点:

findViewById(R.id.imageView).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        final Intent intent = new Intent(MainActivity.this, SubActivity.class);
        ActivityTransitionLauncher.with(MainActivity.this).from(v).launch(intent);
    }
});

......这是第二项活动

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        ActivityTransition.with(getIntent()).to(findViewById(R.id.sub_imageView)).start(savedInstanceState);
    }

API 21 +

根据http://guides.codepath.com/android/shared-element-activity-transition,您只需将<item name="android:windowContentTransitions">true</item>添加到您的活动样式中,并在两个活动中定义android:transitionName="<some name>"的元素(两个活动中的transitionName必须相同),然后像这样开始活动:

Intent intent = new Intent(this, DetailsActivity.class);
// Pass data object in the bundle and populate details activity.
intent.putExtra(DetailsActivity.EXTRA_CONTACT, contact);
ActivityOptionsCompat options = ActivityOptionsCompat.
    makeSceneTransitionAnimation(this, (View)ivProfile, "<transition name>");
startActivity(intent, options.toBundle());

(直接从链接中获取)。但请注意,这仅适用于L +设备,而上述解决方案适用于API 14+以上的任何设备。我个人认为,如果提供了一个提供向后兼容性的好包装器,那么使用本机API是没有意义的,但是你要求它,所以就是这样。

希望这对您有所帮助,如果您有任何问题请发表评论

答案 1 :(得分:0)

您想要的是“共享元素活动转换&#39;”。

  

共享元素转换决定了共享视图的方式   两个活动之间的这些活动之间的过渡对于   例如,如果两个活动在不同位置具有相同的图像   和大小,changeImageTransform共享元素转换   在这些活动之间平滑地翻译和缩放图像。

它需要Android 5.0(API级别21)及更高版本,并且对于任何较低的API版本都将被忽略。很好的例子,了解如何在样本see here上实现它。

API 21之前的解决方案您需要使用第三方库。 一个例子是@Markaos提到的this lib