I am trying to learn simple TransitionManager work, but I'm stuck little bit...
My goal is make changing between two scenes by image clicking. But after first image click and first scene change, i can not catch image click...
here is my fragment code:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ViewGroup sceneRoot = (ViewGroup)rootView.findViewById(R.id.relative);
final Transition transition = new ChangeBounds();
transition.setDuration(3000);
final Scene scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.scene1, getActivity());
final Scene scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.scene2, getActivity());
ImageView image = (ImageView)rootView.findViewById(R.id.image);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!testBoo){
TransitionManager.go(scene2, transition);
testBoo = true;
} else {
testBoo = false;
TransitionManager.go(scene1, transition);
}
}
});
return rootView;
}
fragment xml:
<RelativeLayout
android:id="@+id/relative"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:showIn="@layout/activity_main"
tools:context=".MainActivityFragment">
<include
layout="@layout/scene1"
/>
</RelativeLayout>
scene1 xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/text"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/image"
android:layout_margin="5dp"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignParentTop="true"
/>
</RelativeLayout>
scene2 xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/text"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:layout_alignParentBottom="true"
android:layout_toStartOf="@id/image"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
Have you any idea where I am going wrong?
You need to set onClickListeners again to make it work.
In your onCreateView you can call setListeners method directly.
private void setListeners() {
findViewById(R.id.thirdText).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene3 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.scene_3, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene3, mFadeTransition);
setListeners();
}
});
findViewById(R.id.firsttext).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene1 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.activity_main, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene1,mFadeTransition);
setListeners();
}
});
findViewById(R.id.secondText).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene2 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.scene_2, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene2, mFadeTransition);
setListeners();
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With