【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告_第1页
【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告_第2页
【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告_第3页
【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告_第4页
【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android如何实现自适应屏幕的弹窗广告

在下给大家分享一下Android如何实现自适应屏幕的弹窗广告,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下内容:弹窗广告特点:根据屏幕尺寸和原图片比例自适应代码如下:package

com.example.leixiansheng.addialog;

import

android.annotation.SuppressLint;

import

android.app.Dialog;

import

android.content.Context;

import

android.content.Intent;

import

android.graphics.Bitmap;

import

android.os.Bundle;

import

android.util.DisplayMetrics;

import

android.view.Gravity;

import

android.view.View;

import

android.view.Window;

import

android.view.WindowManager;

import

android.widget.ImageView;

import

android.widget.RelativeLayout;

import

android.widget.Toast;

import

com.bumptech.glide.Glide;

import

com.bumptech.glide.request.animation.GlideAnimation;

import

com.bumptech.glide.request.target.SimpleTarget;

/**

*

Created

by

Leixiansheng

on

2018/6/28.

*/

public

class

AdDialog

extends

Dialog

implements

View.OnClickListener

{

private

Context

context;

private

float

finalWidth;

//最终宽度

private

float

finalHeight;

//最终高度

private

int

padding

=

50;

//屏幕边距间隔

private

int

picWidth;

//图片真实宽度

private

int

picHeight;

//图片真实高度

private

String

mUrl;

public

AdDialog(Context

context,String

url)

{

//

更改样式,把背景设置为透明的

super(context,

R.style.LocationDialogStyle);

this.context

=

context;

mUrl

=

url;

}

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.dialog_ad);

calculateHeightAndWidth();

//初始化布局的位置

initLayoutParams();

setCancelable(false);

setCanceledOnTouchOutside(false);

}

/**

*

按实际图片比例对其的宽高进行缩放

*/

private

void

calculateHeightAndWidth()

{

DisplayMetrics

dm

=

context.getResources().getDisplayMetrics();

final

int

screenWidth

=

dm.widthPixels;

final

int

screenHeight

=

dm.heightPixels;

//获取图片真正的宽高

Glide.with(context)

.load(mUrl)

.asBitmap()//强制Glide返回一个Bitmap对象

.into(new

SimpleTarget<Bitmap>()

{

@Override

public

void

onResourceReady(Bitmap

bitmap,

GlideAnimation<?

super

Bitmap>

glideAnimation)

{

picWidth

=

bitmap.getWidth();

picHeight

=

bitmap.getHeight();

if

(picHeight

>

picWidth)

{

//真实图片高度大于宽度时

finalHeight

=

screenHeight

-

padding

*

2;

finalWidth

=

((picWidth

*

100)

/

picHeight)

*

finalHeight/100;

}

else

{

//真实图片宽度大于高度时

finalWidth

=

screenWidth

-

padding

*

2;

finalHeight

=

((picHeight

*

100)

/

picWidth)

*

finalWidth/100;

}

if

((int)

finalWidth

>

screenWidth

||

(int)

finalHeight

>

screenHeight)

{

//放大后的比例超出屏幕时

finalWidth

=

picWidth;

finalHeight

=

picHeight;

}

initAdView(finalWidth,

finalHeight);

}

});

}

@SuppressLint("ResourceType")

private

void

initAdView(float

width,

float

height)

{

RelativeLayout

relativeLayout

=

(RelativeLayout)

findViewById(R.id.rl_ad);

ImageView

ivAd

=

new

ImageView(context);

ivAd.setScaleType(ImageView.ScaleType.FIT_XY);

ivAd.setId(222);

ivAd.setOnClickListener(this);

//

RelativeLayout.LayoutParams

params1

=

new

RelativeLayout.LayoutParams(UIUtils.px2Dp((int)

width),

UIUtils.px2Dp((int)

height));

RelativeLayout.LayoutParams

params1

=

new

RelativeLayout.LayoutParams((int)

width,

(int)

height);

params1.addRule(RelativeLayout.CENTER_HORIZONTAL);

params1.setMargins(0,

dp2Px(50),

0,

0);

relativeLayout.addView(ivAd,

params1);

Glide

.with(context)

.load(mUrl)

.crossFade()

.into(ivAd);

ImageView

ivCancel

=

new

ImageView(context);

ivCancel.setId(333);

ivCancel.setOnClickListener(this);

ivCancel.setImageResource(R.drawable.icon_ad_close);

RelativeLayout.LayoutParams

params2

=

new

RelativeLayout.LayoutParams(dp2Px(30),

dp2Px(30));

params2.addRule(RelativeLayout.ALIGN_PARENT_TOP);

params2.addRule(RelativeLayout.ALIGN_END,222);

relativeLayout.addView(ivCancel,params2);

}

//

初始化布局的参数

private

void

initLayoutParams()

{

//

布局的参数

WindowManager.LayoutParams

params

=

getWindow().getAttributes();

params.gravity

=

Gravity.CENTER_HORIZONTAL

|

Gravity.CENTER;

getWindow().setAttributes(params);

}

@Override

public

void

onClick(View

v)

{

switch

(v.getId())

{

case

222:

Toast.makeText(context,

"你点击了广告,即将进入···",Toast.LENGTH_SHORT).show();

dismiss();

break;

case

333:

dismiss();

break;

}

}

public

int

dp2Px(int

dp){

/*

1、px

=

dp

*

(dpi

/

160)

2、px/dp

=

density;//像素密度比

*/

DisplayMetrics

metrics

=

context.getResources().getDisplayMetrics();

//

int

dpi

=

metrics.densityDpi;//获得当前设备的dpi

,像素密度

float

density

=

metrics.density;//密度比

return

(int)

(density

*

dp

+

.5f);

}

}动态布局可参考我的文章:安卓动态布局Mainpackage

com.example.leixiansheng.addialog;

import

android.support.v7.app.AppCompatActivity;

import

android.os.Bundle;

import

java.util.Random;

public

class

MainActivity

extends

AppCompatActivity

{

private

String[]

adUrls

=

{"/20101028/0017029521232265_b.jpg",

"/58pic/13/56/51/95K58PICPFk_1024.jpg",

"/it/u=1615585387,2628665620&fm=27&gp=0.jpg",

"/it/u=1306190881,4135880992&fm=27&gp=0.jpg"};

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setConten

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论