makeSceneTransitionAnimation不起作用

时间:2015-09-23 03:03:36

标签: android android-animation android-transitions

我正尝试从GridView转换到新的Activity。

我在下面找到了项目Click事件,

mGridView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View v,
            int position, long id) {
        Intent intent;
        switch(position){
        case MENU_QNA:
            intent = new Intent(MainActivity.this, QNAActivity.class);
            startActivity(intent);
            break;
        case MENU_TRANSITION:
            intent = new Intent(MainActivity.this, TransitionActivity.class);
            //intent.putExtra(TransitionActivity.EXTRA_RES_ID, mGridView.get )
            startActivity(intent,ActivityOptionsCompat.
                    makeSceneTransitionAnimation(MainActivity.this, v , "sample").toBundle());
            break;

        }
    }

这是我的网格项目

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_holder"
android:layout_width="160dp"
android:layout_height="160dp"
android:orientation="vertical"
android:background="@color/grid_item_bg"
android:transitionName="sample"
android:padding="5dp">
<TextView
android:id="@+id/grid_item_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:text="TextView"/>
</LinearLayout>

这是新的活动布局

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_light_gray"
android:orientation="vertical" >

<ImageView
android:id="@+id/sample_img"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="30dp"
android:scaleType="fitCenter"
android:transitionName="sample"
android:src="@drawable/sample_img"/>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:layout_gravity="center"
android:textSize="15dp"/>

</LinearLayout>

我也用android添加样式:windowContentTransitions

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>

但元素转换无效。 我错了什么或错过了什么,我该怎么办?

1 个答案:

答案 0 :(得分:3)

我使用的是Theme.Holo.Light的后代风格。

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentTransitions">true</item>
</style>

但是在如下更改后,(使用parent =“android:Theme.Material”) 它现在工作正常。

<style name="NoActionBar" parent="android:Theme.Material">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentTransitions">true</item>
</style>