最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 登錄處理簡(jiǎn)單實(shí)例(源碼下載)

 更新時(shí)間:2017年03月28日 09:21:58   投稿:lqh  
這篇文章主要介紹了Android 登錄處理簡(jiǎn)單實(shí)例(源碼下載)的相關(guān)資料,需要的朋友可以參考下

Android 登錄處理簡(jiǎn)單實(shí)例

今天整理一下之前在項(xiàng)目中寫的關(guān)于某些界面需要登錄判斷處理。這里整理了一個(gè)簡(jiǎn)易的 Demo 模擬一下 登錄情況 和 未登錄情況 下的界面跳轉(zhuǎn)處理,

效果如圖:

以上分別模擬了,未登錄和已登錄 情況下的 界面跳轉(zhuǎn)和當(dāng)前界面事件處理。接下來我們來看一下實(shí)現(xiàn)方式。

先從核心代碼開始看:

public class GoLoginUtil {

  public static final String CLASSNAME = "className";

  public static final int CODE_LOGIN = 1; // 登錄成功回調(diào) 用于onActivityForResult 判斷


  /**
   * 登錄成功之后,通過 activityResult 回調(diào)到當(dāng)前界面
   *
   * @param activity
   * @param intent
   * @param requestCode
   */
  private static void startActivity(Activity activity, Intent intent, int requestCode) {
    if (requestCode == -1) {
      String targetClass = intent.getComponent().getClassName(); // 目標(biāo)類
      intent.putExtra(CLASSNAME, targetClass);
    }
    intent.setClass(activity, LoginActivity.class); // 跳轉(zhuǎn)重定向到登錄界面
    activity.startActivityForResult(intent, requestCode);
  }


  /**
   * 登錄成功之后,直接跳轉(zhuǎn)目標(biāo) Activity
   *
   * @param activity
   * @param intent
   */
  public static void startActivity(Activity activity, Intent intent) {
    startActivity(activity, intent, -1);
  }

  /**
   * 登錄成功回調(diào)到當(dāng)前界面
   * 使用 onActivityResult 方法接收, requestCode = CODE_LOGIN
   *
   * @param activity
   * @param intent
   */
  public static void startActivityForResult(Activity activity, Intent intent) {
    startActivity(activity, intent, CODE_LOGIN);
  }

}

這里可以看到,最主要的就是第一個(gè) private 修飾的 startActivity 方法,看過 Android Activity 的 startActivity 方法源碼的應(yīng)該知道,它里面其實(shí)就是調(diào)用的 startActivityForResult(intent , -1) . 所以我們這里也來用一下它的寫法。如果 等于 -1 ,那么就說明是有跳轉(zhuǎn)目標(biāo) Activity 的,那么我們就通過 Intent.getComponent().getClassName() 來獲取目標(biāo) Activity 的類名,再次添加到 Intent參數(shù)中,用于我們登錄成功之后的后續(xù)跳轉(zhuǎn)目標(biāo)。當(dāng)然,intent 中的其他參數(shù)是會(huì)一直攜帶著的,這里不用擔(dān)心其他參數(shù)。 不等于 -1 那么就是要進(jìn)行 setResult 回調(diào)了。所以,我們是通過 requestCode 是否等于 -1 來區(qū)分是繼續(xù)跳轉(zhuǎn),還是回調(diào)當(dāng)前界面。 工具類中的下面兩個(gè)方法,就把功能區(qū)分開了,這里基本上看著系統(tǒng)源碼來的。

然后再來進(jìn)行一下二次封裝,這里就需要判斷當(dāng)前 登錄狀態(tài)了,這里我也是模擬一下登錄狀態(tài),代碼如下:

public class IntentUtil {

  public static boolean isLogin; // 模擬獲取當(dāng)前用戶登錄狀態(tài)。

  /**
   * 需要登錄判斷
   *
   * @param activity
   * @param clazz
   * @param bundle
   */
  public static void startToLogin(Activity activity, Class clazz, Bundle bundle) {
    Intent intent = new Intent(activity, clazz);
    if (bundle != null) {
      intent.putExtras(bundle);
    }
    if (isLogin) {
      activity.startActivity(intent);
    } else {
      GoLoginUtil.startActivity(activity, intent);
    }
  }

  /**
   * 登錄成功會(huì)有回調(diào)
   * requestCode = Contants.CODE_LOGIN
   *
   * @param activity
   * @param bundle
   */
  public static void startToLoginResult(Activity activity, Bundle bundle) {
    Intent intent = new Intent();
    if (bundle != null) {
      intent.putExtras(bundle);
    }
    GoLoginUtil.startActivityForResult(activity, intent);
  }
}

寫到現(xiàn)在這樣,基本上需要進(jìn)行登錄跳轉(zhuǎn)界面的,可以直接調(diào)用 startToLogin 方法,根據(jù)登錄狀態(tài)進(jìn)行跳轉(zhuǎn)。至于 startToLoginResult 方法,目前還需要在調(diào)用時(shí)進(jìn)行判斷一下登錄狀態(tài),進(jìn)行區(qū)分處理,然后還要在 onActivityForResult 方法中進(jìn)行回調(diào)處理,這個(gè)暫時(shí)沒想到其他好的方法,各位大神如果有什么好的處理方式還請(qǐng)多多指教。

這里還沒完呢,我們的登錄界面也是需要一定的處理邏輯去進(jìn)行配合的。我們來看一下怎么去配合:

public class LoginActivity extends FragmentActivity {

  private String targetClass;

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    targetClass = getIntent().getStringExtra(GoLoginUtil.CLASSNAME); // 目標(biāo)跳轉(zhuǎn)類


  }

  public void onLoginClick(View view) {
    // 模擬登錄成功操作
    if (!TextUtils.isEmpty(targetClass)) {
      // 這里就是執(zhí)行繼續(xù)跳轉(zhuǎn)操作
      try {
        Class clazz = Class.forName(targetClass);
        getIntent().setClass(this, clazz);
        startActivity(getIntent());
        finish();
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      }
    } else {
      // 這里是登錄成功,回調(diào)到之前界面 onActivityForResult()中 方法可根據(jù)自己需求處理。。
      setResult(RESULT_OK);
      finish();
    }
  }
}

最后來看一下我們的調(diào)用方式:

/**
   * 登錄跳轉(zhuǎn)
   *
   * @param view
   */
  public void onClick1(View view) {
    Bundle bundle = new Bundle();
    bundle.putString("content", et_content.getText().toString());
    IntentUtil.startToLogin(this, LoginSuccessActivity.class, bundle);
  }

  /**
   * 登錄回調(diào)
   *
   * @param view
   */
  public void onClick2(View view) {
    if (!IntentUtil.isLogin) {
      IntentUtil.startToLoginResult(this, null);
    } else {
      tv_text.setText("登錄成功");
    }
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) {
      return;
    }
    if (requestCode == CODE_LOGIN) {
      tv_text.setText("登錄成功");
    }
  }

基本上要整理的就這么多。寫法上的一些不足,還請(qǐng)各位多多指點(diǎn)。

Demo 地址

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Android shell命令行中過濾adb logcat輸出的幾種方法

    Android shell命令行中過濾adb logcat輸出的幾種方法

    本文主要介紹Android shell命令行中過濾adb logcat輸出的方法,這里整理了幾種方法,并詳細(xì)的說明,有需要的朋友可以參考下
    2016-08-08
  • Flow轉(zhuǎn)LiveData數(shù)據(jù)丟失原理詳解

    Flow轉(zhuǎn)LiveData數(shù)據(jù)丟失原理詳解

    這篇文章主要為大家介紹了Flow轉(zhuǎn)LiveData數(shù)據(jù)丟失原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Android學(xué)習(xí)筆記之Shared Preference

    Android學(xué)習(xí)筆記之Shared Preference

    在之前遇到有個(gè)需求是要改settings里面自動(dòng)轉(zhuǎn)屏的首選項(xiàng),于是就學(xué)習(xí)了下Shared Preference。Shared Preference是一種簡(jiǎn)單的、輕量級(jí)的鍵/值對(duì)機(jī)制,用于保存原始應(yīng)用程序數(shù)據(jù),最常見的就是首選項(xiàng)
    2013-09-09
  • Android相機(jī)、圖冊(cè)demo

    Android相機(jī)、圖冊(cè)demo

    這篇文章主要為大家詳細(xì)介紹了Android相機(jī)、圖冊(cè)的基本常見使用方法,幾乎涵蓋了Android相機(jī)、圖冊(cè)操作方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android開發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二)

    Android開發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二)

    我們?cè)趯?shí)際開發(fā)中,有的時(shí)候需要儲(chǔ)存或者備份比較復(fù)雜的數(shù)據(jù)。這些數(shù)據(jù)的特點(diǎn)是,內(nèi)容多、結(jié)構(gòu)大,比如短信備份等,通過本文給大家介紹Android開發(fā)筆記之Android中數(shù)據(jù)的存儲(chǔ)方式(二),對(duì)android數(shù)據(jù)存儲(chǔ)方式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • MVVMLight項(xiàng)目之雙向數(shù)據(jù)綁定

    MVVMLight項(xiàng)目之雙向數(shù)據(jù)綁定

    這篇文章主要介紹了MVVMLight項(xiàng)目中雙向數(shù)據(jù)綁定的示例源碼及實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步除夕快樂,新年快樂
    2022-01-01
  • Android實(shí)現(xiàn)多級(jí)樹形菜單并支持多選功能

    Android實(shí)現(xiàn)多級(jí)樹形菜單并支持多選功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多級(jí)樹形菜單并支持多選功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android自定義ScrollView實(shí)現(xiàn)放大回彈效果

    Android自定義ScrollView實(shí)現(xiàn)放大回彈效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義ScrollView實(shí)現(xiàn)放大回彈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android?NDK開發(fā)之FFmpeg視頻添加水印

    Android?NDK開發(fā)之FFmpeg視頻添加水印

    這篇文章主要介紹了在Android?NDK開發(fā)中如何通過FFmpeg為視頻添加水印,文中的示例代碼講解詳細(xì),對(duì)我們了解Android開發(fā)有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • android 設(shè)置圓角圖片實(shí)現(xiàn)代碼

    android 設(shè)置圓角圖片實(shí)現(xiàn)代碼

    在android應(yīng)用開發(fā)中,可能是美化需要,圖片需要處理成圓角,本文將給出實(shí)現(xiàn)代碼,開發(fā)中的遇到此問題的朋友可以參考下
    2012-11-11

最新評(píng)論

怀集县| 平和县| 台江县| 永靖县| 广平县| 宁晋县| 宜良县| 通化市| 资源县| 普安县| 论坛| 怀化市| 农安县| 上栗县| 武陟县| 普兰店市| 江永县| 道孚县| 芒康县| 黄龙县| 金平| 汝城县| 和田市| 林口县| 罗定市| 龙川县| 兴山县| 西青区| 四子王旗| 浙江省| 沧源| 宣城市| 吴忠市| 建阳市| 镇康县| 固原市| 额尔古纳市| 专栏| 上栗县| 南康市| 桐庐县|