同一時候公布在我的博客
背景
說來這個的背景很easy,常常在使用圖片列表的時候就會想,假設“列表中的圖片放大到整個屏幕”作為 Activity 的補間動畫。就很完美了。
就像這樣:
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 上實現相同的效果。敬請期待。