Android:Activity移入移出効果
9233 ワード
この効果はiosでよく見られますが、Androidバージョンの微信でも似たようなスタイルです.つまり、次のレベルのインタフェースに入るときです.
現在のインタフェースは左に移動し、次のインタフェースは左に移動します.
現在のインタフェースから前のインタフェースに戻るとき:
現在のインタフェースは右に移動し、前のインタフェースは右に移動します.
実装コードは次のとおりです.
1.2つのActivity
2.対応するlayout xml
activity_first.xml
activity_second.xml
3.resでanimディレクトリを作成し、4つのanimationファイルを追加
pull_in_left.xml
pull_in_right.xml
push_out_left.xml
push_out_right.xml
4. strings.xml
現在のインタフェースは左に移動し、次のインタフェースは左に移動します.
現在のインタフェースから前のインタフェースに戻るとき:
現在のインタフェースは右に移動し、前のインタフェースは右に移動します.
実装コードは次のとおりです.
1.2つのActivity
package com.example.activityslideinout;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class FirstActivity extends Activity {
private static final String TAG = "FirstActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG,"onCreate");
//overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
setContentView(R.layout.activity_first);
Button btnGo = (Button) findViewById(R.id.button1);
btnGo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(FirstActivity.this,
SecondActivity.class);
startActivity(intent);
//First Activity Move Left and out,Second Activity Move Left and In
overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.first, menu);
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
//overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
}
}
package com.example.activityslideinout;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
setContentView(R.layout.activity_second);
Button btnBack = (Button) findViewById(R.id.button1);
btnBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(SecondActivity.this,
FirstActivity.class);
startActivity(intent);
//Second Move Right and out,First Move Left and In
overridePendingTransition(R.anim.pull_in_left, R.anim.push_out_right);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.first, menu);
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
}
}
2.対応するlayout xml
activity_first.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FirstActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Go" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginLeft="54dp"
android:layout_marginTop="32dp"
android:text="@string/firstactivity" />
</RelativeLayout>
activity_second.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FirstActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentTop="true"
android:text="Back" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1"
android:layout_marginLeft="18dp"
android:layout_marginTop="18dp"
android:text="@string/secondactivity" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="37dp"
android:text="@string/secondactivity" />
</RelativeLayout>
3.resでanimディレクトリを作成し、4つのanimationファイルを追加
pull_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- move current activity to left and in -->
<!-- First Activity Goes Here From Second Activity Back -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0%"
android:toYDelta="0%" />
pull_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- move current activity to right and in -->
<!-- Second Activity Goes Here -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0%"
android:toYDelta="0%" />
push_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- move current activity to left and out -->
<!-- Second Activity Will Go Here And First Activity Move left and out -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%"
android:toYDelta="0%" />
push_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- move current activity to right and out -->
<!-- Second Activity Move right and out when Back to First Activity -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="100%"
android:toYDelta="0%" />
4. strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ActivitySlideInOut</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="firstactivity">I\'m the first Activity</string>
<string name="secondactivity">I\'m the second activity.</string>
</resources>