这个效果在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>


更多相关文章

  1. Android(安卓)No active compatible AVD's or devices found Exc
  2. Android(安卓)studio git环境配置及提交遇到问题
  3. 发布release版的android apk 软件
  4. Android的新建和目录介绍
  5. AndroidAnnotations应用部署
  6. Xamarin.Forms教程Android(安卓)SDK工具下载安装
  7. Android中对话框显示需要判断的前提条件
  8. Notification 的开发指南
  9. 测试为Android模拟器创建和管理sdcard image文件

随机推荐

  1. ViewGroup中的onInterceptTouchEvent和on
  2. Android(安卓)内部存储安装apk文件实现
  3. android 自分辨式布局
  4. Android(安卓)6.0 变更
  5. android在程序中打开另一个程序
  6. Android(安卓)SDK Manager Failed to fet
  7. 初涉Android设计原则,设计模式
  8. 【Android】OpenGL ES---绘制3D图形、应
  9. 快速学会开发Android(安卓)App
  10. android中的4种launchmode详解