Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現加載廣告圖片和倒計時的開屏布局

Android實現加載廣告圖片和倒計時的開屏布局

編輯:關於Android編程

這是一個android開屏布局的實例,可以用於加載廣告圖片和倒計時的布局。程序中設置的LayoutParams,劃分額外空間比例為6分之5,具體權重比例可根據用戶自己需求來自定義,異步加載廣告圖片,相關的Android代碼。

具體實現代碼如下:

package cn.waps.extend;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.qcn.wzlz.AppConnect;
import com.qcn.wzlz.SDKUtils;
public class LoadingPopAd {
 private final static Handler mHandler = new Handler();
 private static LoadingPopAd loadingAppPopAd;
 public static LoadingPopAd getInstance(){
 if(loadingAppPopAd == null){
  loadingAppPopAd = new LoadingPopAd();
 }
 if (Looper.myLooper() == null) {
  Looper.prepare();
 }
 return loadingAppPopAd;
 }
 /**
 * 獲取開屏布局
 * @param context
 * @param time
 * @return
 */
 public View getContentView(Context context, int time){
 return getLoadingLayout(context, time);
 }
 private LinearLayout getLoadingLayout(final Context context, final int time){
 // 整體布局
 LinearLayout layout = new LinearLayout(context);
 layout.setOrientation(LinearLayout.VERTICAL);
 layout.setGravity(Gravity.CENTER);
 int bg_id = context.getResources().getIdentifier("loading_bg", "drawable", context.getPackageName());
 if(bg_id != 0){
  layout.setBackgroundResource(bg_id);
 }
 // 加載廣告圖片和倒計時的布局,用與
 LinearLayout l_layout = new LinearLayout(context);
 l_layout.setGravity(Gravity.CENTER);
 // 設置LayoutParams,劃分額外空間比例為6分之5(具體權重比例可根據自己需求自定義)
 l_layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1f));
 // 加載圖片的布局
 RelativeLayout pop_layout = new RelativeLayout(context);
 TextView timeView = new TextView(context);
 timeView.setText("剩余" + time + "秒");
 timeView.setTextSize(10);
 timeView.setTextColor(Color.BLACK);
 timeView.setPadding(8, 3, 6, 2);
 int num = 12;
 // 對手機進行屏幕判斷
 int displaySize = SDKUtils.getDisplaySize(context);
 if(displaySize == 320){
  num = 8;
 }else if(displaySize == 240){
  num = 6;
 }else if(displaySize == 720){
  num = 16;
 }else if(displaySize == 1080){
  num = 20;
 }
 float[] outerRadii = new float[] { 0, 0, num, num, 0, 0, num, num};
 ShapeDrawable timeView_shapeDrawable = new ShapeDrawable();
 timeView_shapeDrawable.setShape(new RoundRectShape(outerRadii, null, null));
 timeView_shapeDrawable.getPaint().setColor(Color.argb(255, 255, 255, 255));
 timeView.setBackgroundDrawable(timeView_shapeDrawable);
 //異步執行倒計時
 //異步加載廣告圖片
 new ShowPopAdTask(context, pop_layout, timeView).execute();
 new TimeCountDownTask(timeView, time).execute();
 TextView textView = new TextView(context);
 textView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 5f));
 textView.setText("正在啟動,請稍後...");
 textView.setGravity(Gravity.CENTER);
 textView.setTextColor(Color.WHITE);
 l_layout.addView(pop_layout);
 layout.addView(l_layout);
 layout.addView(textView);
 return layout;
 }
 private class TimeCountDownTask extends AsyncTask<Void, Void, Boolean>{
 TextView timeView;
 int limit_time = 0;
 TimeCountDownTask(TextView timeView, int time){
 this.timeView = timeView;
 this.limit_time = time;
 }
 @Override
 protected Boolean doInBackground(Void... params) {
  while(limit_time > 0){
  mHandler.post(new Runnable(){
   @Override
   public void run() {
   timeView.setText("剩余" + limit_time + "秒");
   }
  });
  try {
   Thread.sleep(1000);
  } catch (Exception e) {
   e.printStackTrace();
  }
  limit_time--;
  }
  return null;
 }
 }
 private class ShowPopAdTask extends AsyncTask<Void, Void, Boolean>{
 Context context;
 RelativeLayout pop_layout;
 LinearLayout popAdView;
 TextView timeView;
 int height_full = 0;
 int height = 0;
 ShowPopAdTask(Context context, RelativeLayout pop_layout, TextView timeView){
  this.context = context;
  this.pop_layout = pop_layout;
  this.timeView = timeView;
 }
 @Override
 protected Boolean doInBackground(Void... params) {
  try {
  height_full = ((Activity)context).getWindowManager().getDefaultDisplay().getHeight();
  int height_tmp = height_full - 75;//75為設備狀態欄加標題欄的高度
  height = height_tmp * 5/6;
  while(true){
   if(((Activity)context).getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
   && height_full <= 480){
   popAdView = AppConnect.getInstance(context).getPopAdView(context, height, height);
   }else{
   popAdView = AppConnect.getInstance(context).getPopAdView(context);
   }
   if(popAdView != null){
   mHandler.post(new Runnable(){
    @Override
    public void run() {
    pop_layout.addView(popAdView);
    popAdView.setId(1);
    //倒計時布局所需的LayoutParams
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_TOP, popAdView.getId());
    params.addRule(RelativeLayout.ALIGN_RIGHT, popAdView.getId());
    // 對手機進行屏幕判斷
    int displaySize = SDKUtils.getDisplaySize(context);
    if(displaySize == 320){
     params.topMargin=1;
     params.rightMargin=1;
    }else if(displaySize == 240){
     params.topMargin=1;
     params.rightMargin=1;
    }else if(displaySize == 720){
     params.topMargin=3;
     params.rightMargin=3;
    }else if(displaySize == 1080){
     params.topMargin=4;
     params.rightMargin=4;
    }else{
     params.topMargin=2;
     params.rightMargin=2;
    }
    pop_layout.addView(timeView, params);
    }
   });
   break;
   }
   try {
   Thread.sleep(500);
   } catch (InterruptedException e) {
   e.printStackTrace();
   }
  }
  } catch (Exception e) {
  e.printStackTrace();
  }
  return null;
 }
 }
}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved