Android中Activity切換時共享視圖元素的切換動畫(5.0以上)


同一時候公布在我的博客

點此進入

背景

說來這個的背景很easy,常常在使用圖片列表的時候就會想,假設“列表中的圖片放大到整個屏幕”作為 Activity 的補間動畫。就很完美了。

就像這樣:

preview

Android 5.0 Lollipop 的 SDK 公布以后。這個新的主題包括在 AppCompat-v7 21了。

這里介紹的實現方法是 ActivityOptionsCompat.makeSceneTransitionAnimation , 缺點是僅僅能在5.0上才干夠看到效果,在5.0下面僅僅能確保程序不出錯。

實現

首先要在 AndroidManifest.xml 中為須要這樣的動畫的 Activity 開啟這個功能,為此我字節寫了一個 style。

<style name="AnimationActivity">
<item name="android:windowContentTransitions">true</item>
</style>

先來造一個瀏覽界面,關鍵是設置共享的視圖元素的兩個地方

public class ViewerActivity extends AppCompatActivity {

    public static void launch(AppCompatActivity activity, View transitionView, int resId) {
        Intent intent = new Intent(activity, ViewerActivity.class);
        intent.putExtra("resId", resId);

        // 這里指定了共享的視圖元素
        ActivityOptionsCompat options = ActivityOptionsCompat
                .makeSceneTransitionAnimation(activity, transitionView, "image");

        ActivityCompat.startActivity(activity, intent, options.toBundle());
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_viewer);
        ImageView imageView = (ImageView) findViewById(R.id.image);
        imageView.setImageResource(getIntent().getIntExtra("resId", R.mipmap.pic_1));

        // 這里指定了被共享的視圖元素
        ViewCompat.setTransitionName(imageView, "image");
    }

}

然后啟動上邊寫好的瀏覽界面

ViewerActivity.launch(MainActivity.this, v, data.get(position).resId);

我知道上面寫得比較簡單,所以我就准備了,

伸手黨的福利:點我跳轉代碼地址

很多其它

上面的方法很easy。可是卻僅僅能在 5.0 的版本號上顯示出效果。對於如今大部分手機還是 4.x 的情況來說。無疑是不能上線的。

下一篇文章將會討論怎樣在 4.x 上實現相同的效果。敬請期待。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM