<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 本節引言: 上一節中我們對Activity一些基本的概念進行了了解,什么是Activity,Activity的生命周期,如何去啟動一個Activity等,本節我們繼續來學習Activity,前面也講了一個App一般都是又多個Activity構成的,這就涉及到了多個Activity間數據傳遞的問題了,那么本節繼續學習Activity的使用!另外關于傳遞集合,對象,數組,Bitmap的我們會在Intent那里進行講解,這里只介紹如何傳遞基本數據! * * * ## 1.Activity間的數據傳遞: ![](https://box.kancloud.cn/2015-12-01_565da692bf4ca.jpg) **代碼示例:** **效果圖:** ![](https://box.kancloud.cn/2015-12-01_565da693522b9.jpg) **代碼下載:**[ActivityTest1.zip](http://www.runoob.com/try/download/ActivityTest1.zip) * * * ## 2.多個Activity間的交互(后一個傳回給前一個) ![](https://box.kancloud.cn/2015-12-01_565da693eac44.jpg) **代碼示例:** **效果圖:** ![](https://box.kancloud.cn/2015-12-01_565da694310a5.jpg) **代碼下載:**[ActivityTest2.zip](http://www.runoob.com/try/download/ActivityTest2.zip) * * * ## 3.知曉當前是哪個Activity ![](https://box.kancloud.cn/2015-12-01_565da694e5203.jpg) * * * ## 4.隨時關閉所有Activity > 有時我們可能會打開了很多個Activity,突然來個這樣的需求,在某個頁面可以關掉 所有的Activity并退出程序!好吧,下面提供一個關閉所有Activity的方法, 就是用一個list集合來存儲所有Activity! ![](https://box.kancloud.cn/2015-12-01_565da6951bb10.jpg) **具體代碼如下:** ~~~ public class ActivityCollector { public static LinkedList<Activity> activities = new LinkedList<Activity>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for(Activity activity:activities) { if(!activity.isFinishing()) { activity.finish(); } } } } ~~~ * * * ## 5.完全退出App的方法 上面說的是關閉所有Activity的,但是有些時候我們可能想殺死整個App,連后臺任務都殺死 殺得一干二凈的話,可以使用搭配著下述代碼使用: **實現代碼:** ~~~ /** * 退出應用程序 */ public void AppExit(Context context) { try { ActivityCollector.finishAll(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception ignored) {} } ~~~ * * * ## 6.雙擊退出程序的兩種方法: ### 1)定義一個變量,來標識是否退出 ~~~ // 定義一個變量,來標識是否退出 private static boolean isExit = false; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; } }; public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!isExit) { isExit = true; Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); // 利用handler延遲發送更改狀態信息 mHandler.sendEmptyMessageDelayed(0, 2000); } else { exit(this); } return false; } return super.onKeyDown(keyCode, event);} ~~~ * * * ### 2)保存點擊時間: ~~~ //保存點擊的時間 private long exitTime = 0; public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { exit(); } return false; } return super.onKeyDown(keyCode, event); } ~~~ * * * ## 7.為Activity設置過場動畫 > 所謂的過場動畫就是切換到另外的Activity時加上一些切換動畫,比如淡入淡出,放大縮小,左右互推等! 當然,我們并不在這里詳細講解動畫,后面有專門的章節來講解這個,這里只教大家如何去加載動畫,另外 給大家提供了一些比較常用的過渡動畫,只要將相關動畫文件添加到res/anim目錄下,然后下述方法二選一 就可以實現Activity的切換動畫了! ### 1)方法一: ![](https://box.kancloud.cn/2015-12-01_565da695523cb.jpg) ### 2)方法二: 通過style進行配置,這個是全局的哦,就是所有的Activity都會加載這個動畫! **實現代碼如下:** **①在style.xml中自定義style:** ~~~ <!-- 默認Activity跳轉動畫 --> <style name="default_animation" mce_bogus="1" parent="@android:style/Animation.Activity"> ????<item name="android:activityOpenEnterAnimation">@anim/default_anim_in</item> ????<item name="android:activityOpenExitAnimation">@anim/anim_stay</item> ????<item name="android:activityCloseEnterAnimation">@anim/anim_stay</item> ????<item name="android:activityCloseExitAnimation">@anim/default_anim_out</item> </style> ~~~ **解釋:** 4個item分別代表: * Activity A跳轉到Activity B時Activity B進入動畫; * Activity A跳轉到Activity B時Activity A退出動畫; * Activity B返回Activity A時Activity A的進入動畫 * Activity B返回Activity A時ActivityB的退出動畫 **②然后修改下AppTheme:** ~~~ <style name="AppTheme" mce_bogus="1" parent="@android:style/Theme.Light"> ????????<item name="android:windowAnimationStyle">@style/default_animation</item> ????????<item name="android:windowNoTitle">true</item> </style> ~~~ **③最后在appliction設置下:** ~~~ <application ???android:icon="@drawable/logo" ???android:label="@string/app_name" ???android:theme="@style/AppTheme" > ~~~ 好的,動畫特效就這樣duang一聲設置好了~ ### 3)其他 好的,除了上面兩種方法以外,還可以使用**TransitionManager**來實現,但是需求版本是API 19以上的, 另外還有一種**addOnPreDrawListener**的轉換動畫,這個用起來還是有點麻煩的,可能不是適合初學者 這里也不講,最后提供下一些常用的動畫效果打包,選擇需要的特效加入工程即可!?[Activity常用過渡動畫.zip](http://www.runoob.com/wp-content/uploads/2015/08/Activity%E5%B8%B8%E7%94%A8%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB.zip) * * * ## 8.Bundle傳遞數據的限制 > 在使用Bundle傳遞數據時,要注意,Bundle的大小是有限制的 < 0.5MB,如果大于這個值 是會報TransactionTooLargeException異常的!!! * * * ## 9.使用命令行查看當前所有Activity的命令: > 使用下述命令即可,前提是你為SDK配置了環境變量:**adb shell dumpsys activity** * * * ## 10.設置Activity全屏的方法: ### 1)代碼隱藏ActionBar 在Activity的onCreate方法中調用getActionBar.hide();即可 ### 2)通過requestWindowFeature設置 requestWindowFeature(Window.FEATURE_NO_TITLE); 該代碼需要在setContentView ()之前調用,不然會報錯!!! ### 3)通過AndroidManifest.xml的theme 在需要全屏的Activity的標簽內設置 theme = @android:style/Theme.NoTitleBar.FullScreen * * * ## 11.onWindowFocusChanged方法妙用: 我們先來看下官方對這個方法的介紹: ![](https://box.kancloud.cn/2015-12-01_565da6958abc2.jpg) 就是,當Activity得到或者失去焦點的時候,就會回調該方法! 如果我們想監控Activity是否加載完畢,就可以用到這個方法了~ 想深入了解的可移步到這篇文章:?[onWindowFocusChanged觸發簡介](http://blog.csdn.net/yueqinglkong/article/details/44981449) * * * ## 12.定義對話框風格的Activity > 在某些情況下,我們可能需要將Activity設置成對話框風格的,Activity一般是占滿全屏的, 而Dialog則是占據部分屏幕的!實現起來也很簡單! 直接設置下Activity的theme: ~~~ android:theme="@android:style/Theme.Dialog" ~~~ 這樣就可以了,當然你可以再設置下標題,小圖標! ~~~ //設置左上角小圖標 requestWindowFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.main); getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_lion_icon); //設置文字: setTitle(R.string.actdialog_title); //XML代碼中設置:android:label="@string/activity_dialog" ~~~ * * * ## 本節小結: 好的,本節我們又學習了一下Activity在實際開發中的一些常見問題,相信在實際開發中會幫到大家的! 下節我們來學習Activty的棧的概念,以及四種加載模式!敬請期待~謝謝~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看