国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    1. Manuel de développement Android / Activity初窺門徑

      Activity初窺門徑

      本節(jié)引言:

      上一節(jié)中我們對Activity一些基本的概念進行了了解,什么是Activity,Activity的生命周期,如何去啟動一個Activity等,本節(jié)我們繼續(xù)來學習Activity,前面也講了一個App一般都是又多個Activity構(gòu)成的,這就涉及到了多個Activity間數(shù)據(jù)傳遞的問題了,那么本節(jié)繼續(xù)學習Activity的使用!另外關(guān)于傳遞集合,對象,數(shù)組,Bitmap的我們會在Intent那里進行講解,這里只介紹如何傳遞基本數(shù)據(jù)!


      Activity間的數(shù)據(jù)傳遞:

      1.png

      代碼示例:

      效果圖:

      2.gif

      代碼下載:ActivityTest1.zip


      2.多個Activity間的交互(后一個傳回給前一個)

      3.png

      代碼示例:

      效果圖:

      4.gif

      代碼下載:ActivityTest2.zip


      3.知曉當前是哪個Activity

      5.png


      4.隨時關(guān)閉所有Activity

      6.png

      有時我們可能會打開了很多個Activity,突然來個這樣的需求,在某個頁面可以關(guān)掉 所有的Activity并退出程序!好吧,下面提供一個關(guān)閉所有Activity的方法, 就是用一個list集合來存儲所有Activity!

      具體代碼如下:

      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的方法

      上面說的是關(guān)閉所有Activity的,但是有些時候我們可能想殺死整個App,連后臺任務都殺死 殺得一干二凈的話,可以使用搭配著下述代碼使用:

      實現(xiàn)代碼:

      /** 
       * 退出應用程序 
       */  
      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延遲發(fā)送更改狀態(tài)信息
      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時加上一些切換動畫,比如淡入淡出,放大縮小,左右互推等! 當然,我們并不在這里詳細講解動畫,后面有專門的章節(jié)來講解這個,這里只教大家如何去加載動畫,另外 給大家提供了一些比較常用的過渡動畫,只要將相關(guān)動畫文件添加到res/anim目錄下,然后下述方法二選一 就可以實現(xiàn)Activity的切換動畫了!

      1)方法一:

      7.png

      2)方法二:

      通過style進行配置,這個是全局的哦,就是所有的Activity都會加載這個動畫!

      實現(xiàn)代碼如下:

      ①在style.xml中自定義style:

      <!-- 默認Activity跳轉(zhuǎn)動畫 -->
      <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跳轉(zhuǎn)到Activity B時Activity B進入動畫;
      • Activity A跳轉(zhuǎn)到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來實現(xiàn),但是需求版本是API 19以上的, 另外還有一種addOnPreDrawListener的轉(zhuǎn)換動畫,這個用起來還是有點麻煩的,可能不是適合初學者 這里也不講,最后提供下一些常用的動畫效果打包,選擇需要的特效加入工程即可!Activity常用過渡動畫.zip


      8.Bundle傳遞數(shù)據(jù)的限制

      在使用Bundle傳遞數(shù)據(jù)時,要注意,Bundle的大小是有限制的 < 0.5MB,如果大于這個值 是會報TransactionTooLargeException異常的?。?!


      9.使用命令行查看當前所有Activity的命令:

      使用下述命令即可,前提是你為SDK配置了環(huán)境變量:adb shell dumpsys activity


      10.設置Activity全屏的方法:

      1)代碼隱藏ActionBar

      在Activity的onCreate方法中調(diào)用getActionBar.hide();即可

      2)通過requestWindowFeature設置

      requestWindowFeature(Window.FEATURE_NO_TITLE); 該代碼需要在setContentView ()之前調(diào)用,不然會報錯?。?!

      注:把 requestWindowFeature(Window.FEATURE_NO_TITLE);放在super.onCreate(savedInstanceState);前面就可以隱藏ActionBar而不報錯。

      3)通過AndroidManifest.xml的theme

      在需要全屏的Activity的標簽內(nèi)設置 theme = @android:style/Theme.NoTitleBar.FullScreen


      11.onWindowFocusChanged方法妙用:

      我們先來看下官方對這個方法的介紹:

      就是,當Activity得到或者失去焦點的時候,就會回調(diào)該方法! 如果我們想監(jiān)控Activity是否加載完畢,就可以用到這個方法了~ 想深入了解的可移步到這篇文章:onWindowFocusChanged觸發(fā)簡介


      12.定義對話框風格的Activity

      在某些情況下,我們可能需要將Activity設置成對話框風格的,Activity一般是占滿全屏的, 而Dialog則是占據(jù)部分屏幕的!實現(xiàn)起來也很簡單!

      直接設置下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"

      本節(jié)小結(jié):

      好的,本節(jié)我們又學習了一下Activity在實際開發(fā)中的一些常見問題,相信在實際開發(fā)中會幫到大家的! 下節(jié)我們來學習Activty的棧的概念,以及四種加載模式!敬請期待~謝謝~