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; } } }

时间: 2024-09-11 14:29:32

Android实现加载广告图片和倒计时的开屏布局的相关文章

Android开屏布局-加载广告图片和倒计时的布局

  一个android开屏布局,用于加载广告图片和倒计时的布局,设置LayoutParams,划分额外空间比例为6分之5(具体权重比例可根据自己需求自定义),异步加载广告图片,相关的Android代码,有兴趣的参考:

xml-webview加载本地图片跨域问题

问题描述 webview加载本地图片跨域问题 html里面没有图片的引用都写到一个xml文件里面html里面只有一个JS引用,加载图片加载不出来只给我一个默认的图片和地址 有好心人回复说是跨域问题我对这方面不懂想问一个demo或者一些代码.谢谢! 解决方案 Android webview加载本地图片Android webview加载本地图片iOS webView加载本地html及图片等问题

android webview加载服务器上js自动轮播图片不显示问题,求大神帮忙

问题描述 android webview加载服务器上js自动轮播图片不显示问题,求大神帮忙 这个是手机版网站地址:m.daxuepai.com.cn 正常打开首页应该有轮播图片,如下图: 轮播功能是做web前端的人用js写的. 以下是我android中的代码,主要就是用webview加载了相应地址的资源,但是我加载了后那个轮播图就没有显示,代码如下: package com.example.testwebkit; import android.app.Activity; import andro

我的Android进阶之旅------&amp;gt;Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piece对象时,程序会直接调用ImageUtil的getPlayImages()方法去获取图片,该方法会随机从res/drawable目录中取得N张图片. 下面是res/drawable目录视图: 为了让getPlayImages()方法能随机从res/drawable目录中取得N张图片,具体实现分为以下几步: 通

android关于加载 2049*1376 图片问题

问题描述 android关于加载 2049*1376 图片问题 <?xml version="1.0" encoding="utf-8"?> android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@

aquery ftp imageview-怎样使用Android Aquery加载ftp上的图片(不下载)

问题描述 怎样使用Android Aquery加载ftp上的图片(不下载) 使用Android Aquery加载http路径的图片: aquery.id(ImageView的id).progress(进度条的id).image(图片的http路径);---->可以成功加载 将上面图片的路径换成ftp的路径(带ftp用户名和密码)时就加载不了图片了,该如何解决??? 解决方案 http://download.csdn.net/album/detail/1121

android imageview加载网络图片无图片

问题描述 android imageview加载网络图片无图片 MainActivity.java package study_imageput.com.study_apktointent; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.widget.ImageV

图片显示不全-android加载本地图片和加载网络图片出现花屏现象

问题描述 android加载本地图片和加载网络图片出现花屏现象 有时候出现有时候没有出现,我将加载后的图片房子viewpaper里面显示 解决方案 Android加载网络图片Android_开源框架_AndroidUniversalImageLoader网络图片加载Android_开源框架_AndroidUniversalImageLoader网络图片加载 解决方案二: 使用图片加载框架了吗 使用的什么方法加载的图片 是不是数据没有加载完整导致的 建议使用图片加载框架.

android的imageloader加载默认图片不能使用.9图片吗?

问题描述 android的imageloader加载默认图片不能使用.9图片吗? .showImageForEmptyUri(R.drawable.default_ico) .showImageOnFail(R.drawable.default_ico) .showImageOnLoading(R.drawable.default_ico) 我使用的图片是.9图片.目的是无论图片多大,加载图片时,图片中央有固定大小APP的logo.可是在imageloader加载中不起作用.中间的LOGO大小还