2017-06-03 60 views
0

我想在點擊圖像時將圖像縮放到新的活動中。 爲了展現我試圖實現的目標,我上傳了一些圖片。 如果通過圖片難以理解,我可以嘗試上傳視頻。 我發現的唯一的事情是this。但它僅適用於View。我想開始一個完整的新的活動或對話。將圖像縮放爲新的活動

任何建議如何以最好的方式做到這一點?

enter image description here enter image description hereenter image description here

回答

2

API 14+

我相信這個庫做的正是你想要的:https://github.com/albinmathew/PreLollipopTransition(是的,你要的是Android的API的一部分,但只能從棒棒糖了 - 你可能也希望支持更低的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是沒有意義的,如果提供了一個提供向後兼容性的良好包裝可用,但你要求它,所以它就是這樣。

希望這可以幫助你,評論,如果您有任何疑問

+0

當我想爲棒棒糖做起來時,我會用什麼?對於Lolipop下我不做這個效果。 –

+0

更新了我的答案。但是我對你有個問題:你爲什麼不想在舊的API上支持這個? (我只是好奇) – Markaos

+0

非常感謝:) –

0

什麼,你想被稱爲「共享元素活動轉移」。

共享元素轉換決定兩個活動之間在這些活動之間轉換的視圖如何共享 。例如,如果兩個活動在不同位置 和尺寸中具有相同的圖像,那麼changeImageTransform共享元素轉換 將在這些活動之間平滑地轉換和縮放圖像。

它需要Android 5.0(API級別21)及以上版本,並且對於任何較低API版本都將被忽略。瞭解如何在樣本see here上實施它的很好的例子。

API 21之前的解決方案您需要使用第三方庫。 @Markaos提到的一個示例是this lib