关于activity切换,推出和覆盖的实现和区别

现在android电商项目中activity的切换,逐步模仿iphone系统的左腿右出的形式,可以参考 京东,淘宝的app 页面切换模式,当然实现的方法很多种,下面方法为此方法之一:

声明:参考/转载
(1)http://www.oschina.net/code/snippet_4873_4772
(2)http://blog.csdn.net/u012301841/article/details/46920809

1.在styesx.xml文件中加入

<style name="FeelyouWindowAnimTheme"  parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/in_from_right</item>
        <item name="android:activityOpenExitAnimation">@anim/out_to_left</item>
        <item name="android:activityCloseEnterAnimation">@anim/in_from_left</item>
        <item name="android:activityCloseExitAnimation">@anim/out_to_right</item>

        <item name="android:windowExitTransition" tools:targetApi="lollipop">@anim/anim_activity_close_for_alpha</item>
        <item name="android:windowEnterTransition" tools:targetApi="lollipop">@anim/push_bottom_in</item>

</style>

现在假设有两个Activity A 和 B,在A中可以启动B。同时,A和B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:
(1)当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为
R.anim.out_to_left,B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.in_from_right。
(2)当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.out_to_right, A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.in_from_left。

2.四大动画布局文件

in_from_right.xml文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="100%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0%p" >

</translate>

in_from_left.xml文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="-100%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0%p" >

</translate>

out_to_left.xml文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="0%p"
    android:toXDelta="-100%p"
    android:interpolator="@android:anim/accelerate_interpolator" >

</translate>

out_to_right.xml文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="0%p"
    android:toXDelta="100%p"
    android:interpolator="@android:anim/accelerate_interpolator" >

</translate>

3.在AndroidManifest.xml文件中声明

<activity
            android:name=".ProductDetailActivity"
            android:theme="@style/AnimActivityTheme"
            />

4.运行程序,就可以看到效果。
注:以上的方式是以一种覆盖叠加方式来切换新的activity的

-----------我是丑陋的分割线----------------------

为了达到推出那种效果,我们还是得用到上面提到的4大布局xml文件
怎么个引用法
在启动页面的时候,引用api

 private void gotoWebActivity(String title, String url) {

        if (url != null && !"".equals(url)) {
            Intent intent = new Intent(mContext, WebActivity.class);
            intent.putExtra("title", title);
            intent.putExtra("url", url);
            mContext.startActivity(intent);

            mContext.overridePendingTransition(R.anim.in_from_right,
                    R.anim.out_to_left);
        }
    }

最主要的是这一句mContext.overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left);
这样就达到推出的效果
关闭activity是时候也要引用到

 getActivity().finish();
                        getActivity().overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);

要在finish()后面

注意:此方法不用在AndroidManifest.xml文件声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FragmentTabHost和FragmentActivity可以帮助我们快速实现应用主界面的Tab切换功能,具体实现步骤如下: 1. 在xml布局文件中定义FragmentTabHost和TabWidget ```xml <android.support.v4.app.FragmentTabHost android:id="@+id/tab_host" android:layout_width="match_parent" android:layout_height="match_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.app.FragmentTabHost> ``` 2. 在FragmentActivity中初始化FragmentTabHost并添加TabSpec ```java public class MainActivity extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTabHost = (FragmentTabHost) findViewById(R.id.tab_host); mTabHost.setup(this, getSupportFragmentManager(), R.id.tab_content); // 添加TabSpec mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"), Fragment1.class, null); mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"), Fragment2.class, null); mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3"), Fragment3.class, null); } } ``` 3. 创建需要显示的Fragment,并在TabSpec中添加对应的Fragment ```java public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, container, false); return view; } } ``` 4. 在xml布局文件中定义需要显示的Fragment布局 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/text_view1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is Fragment1"/> </LinearLayout> ``` 通过以上步骤,我们就可以在应用主界面实现Tab切换功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值