zoukankan      html  css  js  c++  java
  • AndroidのActivity跳转数据通信和跳转动画

    1.当由一个ActivityA进入另一个ActivityB 的时候,ActivityA弹出等待对话框,表示将要进入第二个Activity,当我们按返回键的时候,将从ActivityB返回到ActiviyA,如果在ActivityA直接startActivity的画,Activity的对话框还在转,我们可以用startActivityForResult启动Activity,不过要在ActivityB中调用了finish方法才会返回消息给前一个Activity,在ActivityB中设置返回结果,在ActivityA中复写onActivityResult得到返回消息。

    。ActivityA:

     1 @Override
     2     public void onClick(View v) {
     3         // TODO Auto-generated method stub
     4         if(v==bt){
     5             Intent intent = new Intent(this,OtherActivity.class);
     6             intent.putExtra("other", "第二页");
     7             startActivityForResult(intent, 0);
     8             //dialog.show();
     9         }
    10     }
    11 
    12     @Override
    13     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    14         // TODO Auto-generated method stub
    15         super.onActivityResult(requestCode, resultCode, data);//请求码,结果码
    16         if(resultCode==Activity.RESULT_OK){
    17             Log.e("MainActivity", "onActivityResult");
    18             dialog.dismiss();
    19         }
    20     }

    ActivityB:

    setResult(RESULT_OK);

    2.这是考虑进入另一个Activity比较迟缓,特别是MapActivity加载地图,试想可以在onCreate方法里,调用super()之后弹出一个对话框,然后在视图加载完成回调里关闭对话框,onWindowFocusChange()里dismisDialog似乎没用,它还在转,肯对话框在show时,就在加载View。

    protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            dialog = new ProgressDialog(this);
            dialog.show();
    @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            // TODO Auto-generated method stub
            super.onWindowFocusChanged(hasFocus);
             if(hasFocus){
                 //dialog.dismiss();
                 Log.e("OtherActivity", "加载完毕");
             }else{
                 Log.e("OtherActivity", "加载中..");
             }

    失败。

    3.顺便研究了一下Activity跳转动画,可以再Application节点下,应用动画效果,这将让所有Activity应用该动画主题,也可以针对单个Activity应用动画。新建Style文件,把windowAnimationStyle设置成写好的动画风格,而真正的动画Style应该继承Animation.Activity,然后在各项动画子项里面设置独特的动画。

    style:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="ThemeActivity" mce_bogus="1">  
            <item name="android:windowAnimationStyle">@style/AnimationActivity</item>  
            <item name="android:windowNoTitle">false</item>  
        </style>  
               
       <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">  
           
         <-进入一个Acitvity包括两部分,当前Activity退出动画,下个个Activity进入动画-> <item name="android:activityOpenEnterAnimation">@anim/enter_out</item> //下个Activty进入动画 <item name="android:activityOpenExitAnimation">@anim/enter_in</item> //当前Activity退出的动画

        <-跳回一个Activity也包括两部分,当前Activity摧毁动画,上个Actiivty进入动画-> <item name="android:activityCloseEnterAnimation">@anim/in</item> //上个Activity进入动画 <item name="android:activityCloseExitAnimation">@anim/out</item> //当前Activity退出动画 </style> </resources>

    这是我定义的动画:

    进入下个Activity,当前Activity往左撤出屏幕,下个Activity从底部上升至屏幕顶部。回返Activity的效果是仿照沪江应用的,当前Activity缩小到偏右方消失,透明度从有到无,前一个Activity从1.5倍缩放到正常大小,但是以左上角为中心点缩放。

    Open:

    当前Acitivity摧毁动画

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
       <translate android:fromXDelta="0"
           android:toXDelta="-400"
           android:duration="500"/>//这里就是视图从右往左撤出屏幕的动画
    
        <alpha android:fromAlpha="1.0"
            android:toAlpha="0.5"
            android:duration="800"/>
    
    </set>

    下个Acitivity进入动画

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        
        <translate android:fromYDelta="800"
            android:toYDelta="0"
            android:duration="500" />//从底部上升动画
    
        <alpha android:fromAlpha="0.1"
            android:toAlpha="1.0"
            android:duration="800"/>
    
    </set>

    Close:

    当前Activity销毁动画

    <?xml version="1.0" encoding="utf-8"?>
    <set  xmlns:android="http://schemas.android.com/apk/res/android">
        <scale android:fromXScale="1.0"
            android:toXScale="0.5"
            android:fromYScale="1.0"
            android:toYScale="0.5"
            android:pivotX="75%"
            android:pivotY="50%"
            android:duration="800"
            android:interpolator="@android:anim/accelerate_interpolator"/>//缩放至屏幕右方
    
        <alpha android:fromAlpha="1.0"
            android:toAlpha="0.1"
            android:duration="800"/>
        
    </set>

    上个Actiivty进入动画

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        
        <scale android:fromXScale="1.5"
            android:toXScale="1.0"
            android:fromYScale="1.5"
            android:toYScale="1.0"
            android:duration="800"
            android:pivotX="100%"
            android:pivotY="100%"/>//缩小在左上方
    
    </set>
  • 相关阅读:
    关于数据仓库的数据模型的思考
    西影寺的由来
    机器能像人一样思考吗?人工智能(一)机器学习和神经网络
    手机摄影超越单反?触手可及的AI让每个人成为专业摄影师!
    Flower
    Backpropagation算法 (转
    Spring Data JPA:解析CriteriaQuery
    Spring Data JPA:解析CriteriaBuilder
    Spring Data JPA:解析JpaSpecificationExecutor & Specification
    Spring Data JPA:解析SimpleJpaRepository
  • 原文地址:https://www.cnblogs.com/bvin/p/2637844.html
Copyright © 2011-2022 走看看