Reputation: 31
i have a following code which flip the page but is show same layout and same activity i want to change this code when button press its show another screen with diffrent layout how it is possible? source code given below
package com.samir;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AccelerateInterpolator;
import android.widget.Button;
import android.widget.RelativeLayout;
import com.samir.anim.DisplayNextView;
import com.samir.anim.Rotate3dAnimation;
public class MainActivity extends Activity implements OnClickListener {
Button btnRotateit, btnRotateBack;
RelativeLayout mContainer, relChild1, relChild2;
private boolean isFirstView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mContainer = (RelativeLayout) findViewById(R.id.mainlayout);
relChild1 = (RelativeLayout) findViewById(R.id.child1);
relChild2 = (RelativeLayout) findViewById(R.id.child2);
btnRotateit = (Button) findViewById(R.id.btnrotate);
btnRotateit.setOnClickListener(this);
btnRotateBack = (Button) findViewById(R.id.btnback);
btnRotateBack.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnrotate:
isFirstView = true;
applyRotation(0, 90);
break;
case R.id.btnback:
isFirstView = false;
applyRotation(0, -90);
break;
default:
break;
}
}
private void applyRotation(float start, float end) {
final float centerX = mContainer.getWidth() / 2.0f;
final float centerY = mContainer.getHeight() / 2.0f;
// The animation listener is used to trigger the next animation
final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end,
centerX, centerY, 310.0f, true);
rotation.setDuration(1200);
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
rotation.setAnimationListener(new DisplayNextView(isFirstView,
mContainer, relChild1, relChild2));
mContainer.startAnimation(rotation);
}
}
package com.samir.anim;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.RelativeLayout;
public class DisplayNextView implements AnimationListener {
RelativeLayout mContainer, relChild1, relChild2;
boolean isFirstView;
public DisplayNextView(boolean isFirstView, RelativeLayout mContainer,
RelativeLayout relChild1, RelativeLayout relChild2) {
this.mContainer = mContainer;
this.relChild1 = relChild1;
this.relChild2 = relChild2;
this.isFirstView = isFirstView;
}
@Override
public void onAnimationEnd(Animation animation) {
mContainer.post(new SwapViews());
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
public class SwapViews implements Runnable {
@Override
public void run() {
final float centerX = mContainer.getWidth() / 2.0f;
final float centerY = mContainer.getHeight() / 2.0f;
Rotate3dAnimation rotation;
if (isFirstView) {
rotation = new Rotate3dAnimation(-90, 0, centerX, centerY,
310.0f, false);
} else {
rotation = new Rotate3dAnimation(90, 0, centerX, centerY,
310.0f, false);
}
rotation.setDuration(1500);
rotation.setFillAfter(true);
rotation.setInterpolator(new DecelerateInterpolator());
mContainer.startAnimation(rotation);
if (isFirstView) {
relChild1.setVisibility(View.GONE);
relChild2.setVisibility(View.VISIBLE);
} else {
relChild2.setVisibility(View.GONE);
relChild1.setVisibility(View.VISIBLE);
}
}
}
}
package com.samir.anim;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;
public class Rotate3dAnimation extends Animation {
private final float mFromDegrees;
private final float mToDegrees;
private final float mCenterX;
private final float mCenterY;
private final float mDepthZ;
private final boolean mReverse;
private Camera mCamera;
public Rotate3dAnimation(float fromDegrees, float toDegrees, float centerX,
float centerY, float depthZ, boolean reverse) {
mFromDegrees = fromDegrees;
mToDegrees = toDegrees;
mCenterX = centerX;
mCenterY = centerY;
mDepthZ = depthZ;
mReverse = reverse;
}
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
mCamera = new Camera();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees
+ ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
if (mReverse) {
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
}
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#DCDCDC"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/child1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/btnrotate"
android:layout_width="170dp"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/btnrotate"
android:text="@string/rotateit" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/child2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone" >
<Button
android:id="@+id/btnback"
android:layout_width="170dp"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/btnback"
android:text="@string/rotateback" />
</RelativeLayout>
</RelativeLayout>
Upvotes: 2
Views: 22791
Reputation: 3843
use the setContentView
on your onclicklistener method Like :
setContentView(R.layout.layout);
EDIT: I think you want when btnRotateit
is press then you want to display relChild1
and relChild2
and again press btnRotateBack
then appear the mContainer
, Then Try like:
Add the code on the btnRotateit
onclick Method :
relChild1.setVisibility(View.VISIBLE);
relChild2.setVisibility(View.VISIBLE);
mContainer.setVisibility(View.GONE);
and Add the code on the btnRotateBack
onclick Method :
relChild1.setVisibility(View.GONE);
relChild2.setVisibility(View.GONE);
mContainer.setVisibility(View.VISIBLE);
Try this one and Let me know.
Upvotes: 2
Reputation: 8477
From your response to vishwa, it looks like you don't want to change the layout of your existing activity so much as to change to another activity. In which chase:
Intent intent = new Intent(this, secondpage.class);
startActivity(intent);
Upvotes: 1
Reputation: 15847
onClick(View v)
{
setContentView(R.layout.another);
^^^^^^^
}
EDIT :
For example you have two view, you can set visibility INVISIBLE
or GONE
and in onClick apply rotation and change visibility of components
Upvotes: 1
Reputation: 6317
check this code
private View view = null ;
Button addbutton = null;
ViewGroup parent = null;
LayoutInflater inflater = null;
inflater= (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
addbutton = (Button)findViewById(R.id.btnAdd);
parent = (ViewGroup) findViewById(R.id.mainxml);
addbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view = inflater.inflate(R.layout.other, null);
parent.addView(view);
}
});
Upvotes: 0