私はtutorialをフォローしていて、自分で何かしたいと思っています。このチュートリアルでは、アニメーション化する方法を教えてくれました。だから私はそれをしました、今私は前のビュー(シーン)を復元したいです。まず最初に、新しいビューをフェードインしても問題ありませんが、リストア/リセットは失敗します。それは、このように振る舞う必要があります:私は、メニューストリップ(ImageViewの)へonClickListener
を設定し、ビューがいっぱいであるかないかどうかを確認するためにboolean
値を切り替えていますトランジションフレームワークを使用してシーンを復元またはリセットする
。私が遭遇した1つの問題は、新しいレイアウトが移行時に膨らんでいるので、tansitionが終了するときにonClickListener
を再割り当てしなければならないということでした。しかし、3つのボタンが表示された後でクリックすると、クリックが(登録されていない場合はチェックして)登録されません。ここ
は、コードファイルです:
活動のレイアウト:
<?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>
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ファイルがあります
Trans itionレイアウト(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 - 遷移2番はすでに
1Aが起こっている場合boolean
をチェック - 移行、更新boolean
。
2 - boolean
を更新し、前のシーンを呼び出す - 移行は
2Aが起こった場合。
でブレークポイントに到達することができないので、でこの問題が発生していると思われます。登録されていれば、期待通りに動作するかもしれません。 logcat
エラー/警告はありません。
を使用するこんにちは、私はこれを解決し、これを達成するために、更新するのを忘れて、私たちはのCustomViewを使用両方のSceneオブジェクトでScene.EnterAction(Runnable ...)を使用してください。あなたの答えを編集すれば、私はそれを受け入れます。 – Talha