Android实现加载广告图片和倒计时的开屏布局
这是一个android开屏布局的实例,可以用于加载广告图片和倒计时的布局。程序中设置的LayoutParams,划分额外空间比例为6分之5,具体权重比例可根据用户自己需求来自定义,异步加载广告图片,相关的Android代码。
具体实现代码如下:
packagecn.waps.extend; importandroid.app.Activity; importandroid.content.Context; importandroid.content.res.Configuration; importandroid.graphics.Color; importandroid.graphics.drawable.ShapeDrawable; importandroid.graphics.drawable.shapes.RoundRectShape; importandroid.os.AsyncTask; importandroid.os.Handler; importandroid.os.Looper; importandroid.view.Gravity; importandroid.view.View; importandroid.view.ViewGroup.LayoutParams; importandroid.widget.LinearLayout; importandroid.widget.RelativeLayout; importandroid.widget.TextView; importcom.qcn.wzlz.AppConnect; importcom.qcn.wzlz.SDKUtils; publicclassLoadingPopAd{ privatefinalstaticHandlermHandler=newHandler(); privatestaticLoadingPopAdloadingAppPopAd; publicstaticLoadingPopAdgetInstance(){ if(loadingAppPopAd==null){ loadingAppPopAd=newLoadingPopAd(); } if(Looper.myLooper()==null){ Looper.prepare(); } returnloadingAppPopAd; } /** *获取开屏布局 *@paramcontext *@paramtime *@return */ publicViewgetContentView(Contextcontext,inttime){ returngetLoadingLayout(context,time); } privateLinearLayoutgetLoadingLayout(finalContextcontext,finalinttime){ //整体布局 LinearLayoutlayout=newLinearLayout(context); layout.setOrientation(LinearLayout.VERTICAL); layout.setGravity(Gravity.CENTER); intbg_id=context.getResources().getIdentifier("loading_bg","drawable",context.getPackageName()); if(bg_id!=0){ layout.setBackgroundResource(bg_id); } //加载广告图片和倒计时的布局,用与 LinearLayoutl_layout=newLinearLayout(context); l_layout.setGravity(Gravity.CENTER); //设置LayoutParams,划分额外空间比例为6分之5(具体权重比例可根据自己需求自定义) l_layout.setLayoutParams(newLinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1f)); //加载图片的布局 RelativeLayoutpop_layout=newRelativeLayout(context); TextViewtimeView=newTextView(context); timeView.setText("剩余"+time+"秒"); timeView.setTextSize(10); timeView.setTextColor(Color.BLACK); timeView.setPadding(8,3,6,2); intnum=12; //对手机进行屏幕判断 intdisplaySize=SDKUtils.getDisplaySize(context); if(displaySize==320){ num=8; }elseif(displaySize==240){ num=6; }elseif(displaySize==720){ num=16; }elseif(displaySize==1080){ num=20; } float[]outerRadii=newfloat[]{0,0,num,num,0,0,num,num}; ShapeDrawabletimeView_shapeDrawable=newShapeDrawable(); timeView_shapeDrawable.setShape(newRoundRectShape(outerRadii,null,null)); timeView_shapeDrawable.getPaint().setColor(Color.argb(255,255,255,255)); timeView.setBackgroundDrawable(timeView_shapeDrawable); //异步执行倒计时 //异步加载广告图片 newShowPopAdTask(context,pop_layout,timeView).execute(); newTimeCountDownTask(timeView,time).execute(); TextViewtextView=newTextView(context); textView.setLayoutParams(newLinearLayout.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); returnlayout; } privateclassTimeCountDownTaskextendsAsyncTask<Void,Void,Boolean>{ TextViewtimeView; intlimit_time=0; TimeCountDownTask(TextViewtimeView,inttime){ this.timeView=timeView; this.limit_time=time; } @Override protectedBooleandoInBackground(Void...params){ while(limit_time>0){ mHandler.post(newRunnable(){ @Override publicvoidrun(){ timeView.setText("剩余"+limit_time+"秒"); } }); try{ Thread.sleep(1000); }catch(Exceptione){ e.printStackTrace(); } limit_time--; } returnnull; } } privateclassShowPopAdTaskextendsAsyncTask<Void,Void,Boolean>{ Contextcontext; RelativeLayoutpop_layout; LinearLayoutpopAdView; TextViewtimeView; intheight_full=0; intheight=0; ShowPopAdTask(Contextcontext,RelativeLayoutpop_layout,TextViewtimeView){ this.context=context; this.pop_layout=pop_layout; this.timeView=timeView; } @Override protectedBooleandoInBackground(Void...params){ try{ height_full=((Activity)context).getWindowManager().getDefaultDisplay().getHeight(); intheight_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(newRunnable(){ @Override publicvoidrun(){ pop_layout.addView(popAdView); popAdView.setId(1); //倒计时布局所需的LayoutParams RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_TOP,popAdView.getId()); params.addRule(RelativeLayout.ALIGN_RIGHT,popAdView.getId()); //对手机进行屏幕判断 intdisplaySize=SDKUtils.getDisplaySize(context); if(displaySize==320){ params.topMargin=1; params.rightMargin=1; }elseif(displaySize==240){ params.topMargin=1; params.rightMargin=1; }elseif(displaySize==720){ params.topMargin=3; params.rightMargin=3; }elseif(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(InterruptedExceptione){ e.printStackTrace(); } } }catch(Exceptione){ e.printStackTrace(); } returnnull; } } }