我當時正在關注tutorial並希望自己做一些事情。該教程向我展示瞭如何進行動畫製作。所以我做到了,現在我想恢復之前的視圖(場景)。首先是淡入新的視圖,這很好,但恢復/重置失敗。它應該這樣的表現:使用轉換框架恢復或重置場景
我設置onClickListener
菜單條(ImageView的),並切換boolean
值,以檢查是否查看是否已滿。我遇到的一個問題是,當轉換結束時,我不得不重新分配onClickListener
,因爲新的佈局正在膨脹過渡。但是當我點擊三個按鈕後可以看到,它不會記錄我的點擊(通過調試我檢查)。
這裏是代碼文件:
public class HorizotalViewActivity extends AppCompatActivity implements Transition.TransitionListener, View.OnClickListener
{
boolean viewing = false;
ImageView goButton;
Scene scene, restoreScene;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_horizotal_view);
ViewGroup sceneView = (ViewGroup) findViewById(R.id.sceneView);
scene = Scene.getSceneForLayout(sceneView,
R.layout.transition_example2, this);
restoreScene = Scene.getSceneForLayout(sceneView,
R.layout.transition_example, this);
goButton = (ImageView) findViewById(R.id.goButton);
goButton.setOnClickListener(this);
}
@Override public void onTransitionStart(Transition transition)
{
}
@Override public void onTransitionEnd(Transition transition)
{
goButton = (ImageView) findViewById(R.id.goButton);
goButton.setOnClickListener(this);
}
//...
@Override public void onClick(View view)
{
if (!viewing)
{
TransitionManager.go(scene);
viewing = true;
}
else
{
TransitionManager.go(restoreScene);
//goToScene(restoreScene);
viewing = false;
}
}
}
這裏是XML文件:
活動佈局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sceneView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.lgvalle.material_animations.HorizotalViewActivity">
<include layout="@layout/transition_example"/>
</LinearLayout>
默認佈局(transition_example.xml):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scene"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/goButton"
android:src="@drawable/menu"
android:layout_width="60dp"
android:layout_height="60dp" />
</LinearLayout>
Trans銀行足球比賽佈局(transition_example2.xml):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scene"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/goButton"
android:src="@drawable/menu"
android:layout_width="60dp"
android:layout_height="60dp" />
<ImageView
android:id="@+id/play"
android:layout_marginLeft="15dp"
android:src="@drawable/play"
android:layout_width="60dp"
android:layout_height="60dp" />
<ImageView
android:id="@+id/repeat"
android:layout_marginLeft="15dp"
android:src="@drawable/repeat"
android:layout_width="60dp"
android:layout_height="60dp" />
<ImageView
android:id="@+id/share"
android:layout_marginLeft="15dp"
android:src="@drawable/share"
android:layout_width="60dp"
android:layout_height="60dp" />
</LinearLayout>
我看不出有任何問題與我的邏輯,它的自我解釋,
1 - 檢查boolean
如果過渡二是已經發生
1A - 做轉換,更新boolean
。
2 - 如果轉換髮生
2A - 呼叫一個場景,更新boolean
。
現在,我想這個問題onCickListener
,因爲我不能得到斷點onClickListener
一旦TransitionManager.go()
被調用,如果它得到註冊它可能會按預期工作。沒有logcat
錯誤/警告。
您好我解決了這一點,忘了更新,要實現這一目標,我們在兩個Scene對象上使用Scene.EnterAction(Runnable ...)。編輯你的答案,我會接受它。 – Talha