Android:Activity移入移出效果
16lz
2021-01-26
这个效果在ios上很常见,Android版本微信上也是类似风格,即进入下一级界面的时候:
当前界面向左移出,下一个界面向左移入。
从当前界面返回上一个界面时:
当前界面向右移出,上一个界面向右移入。
下面是实现代码:
1. 两个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 stubIntent intent = new Intent(FirstActivity.this,SecondActivity.class);startActivity(intent);//First Activity Move Left and out,Second Activity Move Left and InoverridePendingTransition(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 stubIntent intent = new Intent(SecondActivity.this,FirstActivity.class);startActivity(intent);//Second Move Right and out,First Move Left and InoverridePendingTransition(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>
更多相关文章
- Android(安卓)No active compatible AVD's or devices found Exc
- Android(安卓)studio git环境配置及提交遇到问题
- 发布release版的android apk 软件
- Android的新建和目录介绍
- AndroidAnnotations应用部署
- Xamarin.Forms教程Android(安卓)SDK工具下载安装
- Android中对话框显示需要判断的前提条件
- Notification 的开发指南
- 测试为Android模拟器创建和管理sdcard image文件