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

Android啟動(dòng)頁(yè)廣告(騰訊廣告聯(lián)盟)解決方法及源碼下載

 更新時(shí)間:2017年03月21日 10:46:29   作者:landptf  
這篇文章主要介紹了Android啟動(dòng)頁(yè)廣告(騰訊廣告聯(lián)盟)解決方法的相關(guān)資料,啟動(dòng)頁(yè)幾乎成為了每個(gè)app的標(biāo)配,有些商家在啟動(dòng)頁(yè)中增加了開屏廣告以此帶來更多的收入,需要的朋友可以參考下

Android啟動(dòng)頁(yè)廣告(騰訊廣告聯(lián)盟)

啟動(dòng)頁(yè)幾乎成為了每個(gè)app的標(biāo)配,有些商家在啟動(dòng)頁(yè)中增加了開屏廣告以此帶來更多的收入。目前啟動(dòng)頁(yè)的廣告都有倒計(jì)時(shí)的功能,那么我們?cè)诘褂?jì)時(shí)的過程中能做些什么呢?

這篇文章主要包括以下兩方面內(nèi)容

  1. 集成騰訊廣告聯(lián)盟的SDK
  2. 啟動(dòng)頁(yè)加載過程中,后臺(tái)初始化數(shù)據(jù)

我們?cè)谠O(shè)計(jì)啟動(dòng)頁(yè)時(shí)的常規(guī)做法是建立一個(gè)Activity來加載開屏圖片或者廣告,作為程序的入口,那么在這個(gè)三到五秒時(shí)間內(nèi)如果進(jìn)行數(shù)據(jù)下載,當(dāng)用戶點(diǎn)擊了跳過按鈕或者計(jì)時(shí)結(jié)束了數(shù)據(jù)還沒初始化完成,已經(jīng)進(jìn)入了主頁(yè)面,而主界面剛好需要那些基礎(chǔ)數(shù)據(jù)該如何?


                                    隨機(jī)廣告與移動(dòng)無關(guān)

因此,我們將啟動(dòng)頁(yè)和主界面設(shè)計(jì)成兩個(gè)Fragment,集成到MainActivity中。這樣我們?cè)趩?dòng)頁(yè)中加載廣告,在主界面中下載數(shù)據(jù),登陸等耗時(shí)操作,程序的結(jié)構(gòu)如下:


                                             結(jié)構(gòu)

01 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.landptf.blog.MainActivity">

  <fragment
    android:id="@+id/fm_splash"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.landptf.blog.splash.SplashFragment" />

  <fragment
    android:id="@+id/fm_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.landptf.blog.MainFragment" />

</FrameLayout>

包含了兩個(gè)fragment,分別是加載廣告也和主界面的

02 MainActivity.java

/**
 * Created by landptf on 2017/03/18.
 * 主頁(yè)面,包含了SplashFragment和MainFragment
 */
public class MainActivity extends AppCompatActivity {

  private FragmentManager frManager;
  private SplashFragment fmSplash;
  private MainFragment fmMain;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
  }

  private void initView() {
    frManager = getSupportFragmentManager();
    fmSplash = (SplashFragment) frManager.findFragmentById(R.id.fm_splash);
    fmMain = (MainFragment) frManager.findFragmentById(R.id.fm_main);
    showSplash();
  }

  private void showSplash(){
    frManager.beginTransaction().hide(fmMain).show(fmSplash).commit();
  }

  public void dismissSplash(){
    frManager.beginTransaction().hide(fmSplash).show(fmMain).commitAllowingStateLoss();
  }
}

在SplashFragment中廣告加載完成或者點(diǎn)擊跳過后調(diào)用dismissSplash將SplashFragment隱藏,將MainFragment顯示出來

03 SplashFragment.java

/**
 * Created by landptf on 2017/03/18.
 * 啟動(dòng)頁(yè),集成了騰訊廣告聯(lián)盟的開屏廣告
 */
public class SplashFragment extends Fragment {
  private static final String TAG = SplashFragment.class.getSimpleName();

  private MainActivity activity;

  private ViewGroup container;
  private TextView tvSkip;
  private ImageView ivSplashHolder;
  private static final String SKIP_TEXT = "點(diǎn)擊跳過 %d";

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
               Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_splash, container, false);
  }

  @Override
  public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    activity = (MainActivity) getActivity();
    initView();
  }

  private void initView() {
    container = (ViewGroup) activity.findViewById(R.id.fl_splash_container);
    tvSkip = (TextView) activity.findViewById(R.id.tv_skip);
    ivSplashHolder = (ImageView) activity.findViewById(R.id.iv_splash_holder);
    //申請(qǐng)動(dòng)態(tài)權(quán)限
    ApplyPermissions();
  }

  /**
   * 動(dòng)態(tài)申請(qǐng)集成騰訊廣告聯(lián)盟的開屏廣告所需要的三個(gè)權(quán)限
   * 使用了RxPermissions開源框架
   */
  private void ApplyPermissions() {
    RxPermissions rxPermissions = new RxPermissions(activity);
    rxPermissions
        .request(Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
        .subscribe(granted -> {
          if (granted) {
            //獲取開屏廣告
            new SplashAD(activity, container, tvSkip, Constants.APPID, Constants.SplashPosID, adListener, 5000);
          } else {
            //直接進(jìn)入主頁(yè)面
            activity.dismissSplash();
          }
        });

  }

  /**
   * 開屏廣告狀態(tài)的監(jiān)聽
   */
  private SplashADListener adListener = new SplashADListener() {

    /**
     * 廣告關(guān)閉時(shí)調(diào)用,可能是用戶關(guān)閉或者展示時(shí)間到。此時(shí)一般需要跳過開屏的Activity,進(jìn)入應(yīng)用內(nèi)容頁(yè)面
     */
    @Override
    public void onADDismissed() {
      activity.dismissSplash();
    }

    /**
     * 廣告加載失敗,errCode用于描述失敗原因。
     * @param i
     */
    @Override
    public void onNoAD(int i) {
      Log.e(TAG, "error code = " + i);
      activity.dismissSplash();
    }

    /**
     * 廣告成功展示時(shí)調(diào)用
     */
    @Override
    public void onADPresent() {
      ivSplashHolder.setVisibility(View.GONE);
    }

    /**
     * 廣告被點(diǎn)擊時(shí)調(diào)用
     */
    @Override
    public void onADClicked() {
      Log.i(TAG, "SplashADClicked");
    }

    /**
     * 倒計(jì)時(shí)回調(diào),返回廣告還將被展示的剩余時(shí)間,單位是ms
     * @param l
     */
    @Override
    public void onADTick(long l) {
      tvSkip.setText(String.format(SKIP_TEXT, Math.round(l / 1000f)));
    }
  };
}

這里集成了騰訊廣告聯(lián)盟,點(diǎn)擊這里注冊(cè),流程比較簡(jiǎn)單,按照說明一步一步進(jìn)行就可以了,sdk文檔也比較詳細(xì)。

當(dāng)廣告加載完成后調(diào)用 activity.dismissSplash();將其隱藏

04 MainFragment.java

/**
 * 模擬后臺(tái)耗時(shí)操作
 */
private void testThread(){
  new Thread(() -> {
    int i = 0;
    while (i < 5) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      Log.e(TAG, "--- " + i + " ---");
      i++;
    }
  }).start();
}

在MainFragment主線程中開啟了一個(gè)只線程來模擬耗時(shí)操作,通過log可以看到在廣告倒計(jì)時(shí)的過程中線程已經(jīng)在執(zhí)行了。

03-18 03:30:50.348 9491-9513/com.landptf.blog E/MainFragment: --- 0 ---
03-18 03:30:51.348 9491-9513/com.landptf.blog E/MainFragment: --- 1 ---
03-18 03:30:52.348 9491-9513/com.landptf.blog E/MainFragment: --- 2 ---
03-18 03:30:53.349 9491-9513/com.landptf.blog E/MainFragment: --- 3 ---
03-18 03:30:54.350 9491-9513/com.landptf.blog E/MainFragment: --- 4 ---

以上就是app的啟動(dòng)頁(yè)方案,充分利用了加載廣告的時(shí)間

代碼下載:http://xiazai.jb51.net/201703/yuanma/BlogDemo-master(jb51.net).rar

相關(guān)文章

  • Android 實(shí)現(xiàn)調(diào)用系統(tǒng)照相機(jī)拍照和錄像的功能

    Android 實(shí)現(xiàn)調(diào)用系統(tǒng)照相機(jī)拍照和錄像的功能

    這篇文章主要介紹了Android 實(shí)現(xiàn)調(diào)用系統(tǒng)照相機(jī)拍照和錄像的功能的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Android 基于IntentService的文件下載的示例代碼

    Android 基于IntentService的文件下載的示例代碼

    本篇文章主要介紹了Android 基于IntentService的文件下載的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • Android?ViewBinding使用介紹

    Android?ViewBinding使用介紹

    最近這段時(shí)間在學(xué)習(xí)Kotlin,突然發(fā)現(xiàn)谷歌已經(jīng)把kotlin-android-extensions插件廢棄,目前推薦使用ViewBinding來進(jìn)行替代,接下來通過本文給大家分享Android使用ViewBinding的詳細(xì)步驟,感興趣的朋友一起學(xué)習(xí)吧
    2022-09-09
  • 擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)

    擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)

    這篇文章主要給大家介紹了關(guān)于擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Android ActivityManagerService啟動(dòng)流程詳解

    Android ActivityManagerService啟動(dòng)流程詳解

    這篇文章主要介紹了Android ActivityManagerService啟動(dòng)流程,AMS,即ActivityManagerService,是安卓java framework的一個(gè)服務(wù),運(yùn)行在system_server進(jìn)程。此服務(wù)十分重要,因?yàn)樗芾碇沧康乃拇蠼M件,是安卓APP開發(fā)者最常接觸到的一個(gè)服務(wù)
    2023-02-02
  • Android圖片加載框架Gilde源碼層深入分析

    Android圖片加載框架Gilde源碼層深入分析

    Glide就像Picasso,可以從多個(gè)源去加載和顯示圖片,同時(shí)也兼顧緩存和在做圖片處理的時(shí)候維持一個(gè)低內(nèi)存消耗。它已經(jīng)在Google官方APP中使用了,就和Picasso一樣受歡迎
    2022-11-11
  • Kotlin中雙冒號(hào)::使用方法

    Kotlin中雙冒號(hào)::使用方法

    這篇文章主要給大家介紹了關(guān)于Kotlin中雙冒號(hào)::使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Android 底部導(dǎo)航控件實(shí)例代碼

    Android 底部導(dǎo)航控件實(shí)例代碼

    這篇文章主要介紹了Android 底部導(dǎo)航控件實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Android中獲取sha1證書指紋數(shù)據(jù)的方法

    Android中獲取sha1證書指紋數(shù)據(jù)的方法

    大家都知道在Android開發(fā)中,經(jīng)常要獲取sha1證書指紋,所以這篇文章主要介紹在Android中如何使用命令獲取sha1證書指紋數(shù)據(jù)的方法,有需要的可以參考借鑒。
    2016-09-09
  • android 上傳aar到私有maven服務(wù)器的示例

    android 上傳aar到私有maven服務(wù)器的示例

    這篇文章主要介紹了android 上傳aar到私有maven服務(wù)器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11

最新評(píng)論

介休市| 阿克陶县| 庆城县| 尖扎县| 兴文县| 玛纳斯县| 庆元县| 富锦市| 北海市| 尼木县| 宜兰县| 县级市| 将乐县| 共和县| 清涧县| 石家庄市| 休宁县| 汪清县| 全椒县| 石楼县| 房产| 友谊县| 眉山市| 唐山市| 余江县| 新余市| 永清县| 汝城县| 固镇县| 屏山县| 依安县| 肃北| 镇平县| 海南省| 宜宾市| 江源县| 登封市| 织金县| 从化市| 莎车县| 康平县|