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>

更多相关文章

  1. android中的触摸事件处理过程详解
  2. Android(安卓)8.0 适配安装未知来源权限 canRequestPackageInsta
  3. Android(安卓)动画-Interpolator和TypeEvaluator
  4. Android(安卓)三种动画详解及简单实例
  5. (20120731)Android中的各种对话框总结(dialog)
  6. AdapterViewFlipper实现跑马灯横幅广告滚动效果
  7. Android(安卓)启动程序时动画效果(渐变)
  8. Animation & Property Animation 使用
  9. Android(安卓)OpenCV 颜色识别

随机推荐

  1. 关于安卓活动的生命周期
  2. Android(安卓)自定义view仿IOS开关
  3. Android(安卓)open failed: EBUSY (Devic
  4. Android如何通过TextView实现超链接的跳
  5. pc进入android手机shell的root权限(su: n
  6. Flutter学习五之网络请求和轮播图的实现
  7. 收藏 Android系统 init 启动过程分析
  8. android回调接口的两种方式
  9. Android(安卓)Handle的使用(转)
  10. Android招财进宝手势密码的实现