Android pad动态适配方案

转载请注明出处:http://blog.csdn.net/devilnov/article/details/44835243
import android.content.pm.ActivityInfo;
import android.view.Display;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;

/**
 * 动态适配
 * 屏幕长宽按比例缩放
 * @author Administrator
 *
 */
public class UiScaleUtil {

	/**
	 * pad版的缩放比例
	 * w 长边
	 * h 短边
	 */
	public final static double PAD_SCALE_LONGGER = 0.9;
	public final static double PAD_SCALE_LONG = 0.8;
	public final static double PAD_SCALE_SHORT = 0.6;

	/**
	 * 对dialog的 w 进行动态缩放
	 * @param window
	 * @param orientation
	 */
	public static void scaleDialog(Window window, int orientation){
		WindowManager m = window.getWindowManager();
		Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
		WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值
		double scaleW = 1;
		if (orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
			scaleW = UiScaleUtil.PAD_SCALE_SHORT;
		} else {
			scaleW = UiScaleUtil.PAD_SCALE_LONG;
		}
		int frameWidth = (int) (d.getWidth() * scaleW);
		if (frameWidth < 600) {
			frameWidth = (int) (d.getWidth() * UiScaleUtil.PAD_SCALE_LONGGER);
		}
		p.width = (int) (frameWidth / 2); // 宽度设置为屏幕缩放比例的一半,即收银台宽度的一半

		window.setAttributes(p);
		window.setGravity(Gravity.CENTER);
	}
	/**
	 * 对activity的 w 和 h 进行动态缩放
	 * @param window
	 * @param orientation
	 */
	public static void scaleActivity(Window window, int orientation){
		WindowManager m = window.getWindowManager();
        Display d = m.getDefaultDisplay();  //为获取屏幕宽、高
        LayoutParams p = window.getAttributes();  //获取对话框当前的参数值
        double scaleH = 1;
        double scaleW = 1;
        if(orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
        	scaleH = UiScaleUtil.PAD_SCALE_LONG;
            scaleW = UiScaleUtil.PAD_SCALE_SHORT;
        }else{
        	scaleH = UiScaleUtil.PAD_SCALE_SHORT;
            scaleW = UiScaleUtil.PAD_SCALE_LONG;
        }
        p.height = (int) (d.getHeight() * scaleH);   //高度设置为屏幕实际宽度的比例
        p.width = (int) (d.getWidth() * scaleW);    //宽度设置为屏幕实际宽度的比例
        if(d.getHeight() > d.getWidth()){
            if(p.width < 600){
            	p.width = (int) (d.getWidth() * UiScaleUtil.PAD_SCALE_LONGGER);
            }
        }else if(d.getHeight() < d.getWidth()){
        	if(p.height < 600){
            	p.height = (int) (d.getHeight() * UiScaleUtil.PAD_SCALE_LONGGER);
            }
        }

        p.alpha = 1.0f;                //设置本身透明度
        p.dimAmount = 0.0f;                //设置黑暗度
        window.setAttributes(p);     //设置生效
        window.setGravity(Gravity.CENTER);                 //设置靠右对齐
	}
}

时间: 2024-08-29 15:43:36

Android pad动态适配方案的相关文章

Android开发屏幕适配方案

Android屏幕适配方案总结 日常开发中,难免遇到屏幕适配的方案,网上也有很多方案,在这里本人只是做一个总结,以免日后使用 单位的概念 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸,主要用于印刷与平面设计.1英寸=2.54厘米=72磅 1pt=0.03527cm px(pixel):像素,组成屏幕图像的最小点,一个相对大小单位.同尺寸屏幕中像素越小越多,代表屏幕分辨率越高,反之越高. 1pt=(ppi/72)*px 屏幕尺寸(screen size):屏幕物理尺寸,指屏幕

android屏幕适配方案

曾经看了android的屏幕适配方案,有非常多种.当中自己用到的一种是:先找一款主流的分辨率的android机,如:1080*1920的分辨率做基准,然后在这个基准上.调整好一切布局.图片.适配其它手机分辨率的手机.用百分比来调节.比如:在480*800的主流手机上,写了一个height=520,那么在480*800的手机上,这个控件的高度则为 480height = 520 * 屏幕高度/1920. 这种方案做屏幕适配. 项目遇到一个问题. 在剩余空间里.在1080*1920的手机上适配非常好

cocos2d-x多分辨率适配方案:setDesignResolutionSize使用

1. setDesignResolutionSize使用方法及主要的三种适配模式 在cocos2d-x 2.0里,提供了一个叫做setDesignResolutionSize的方法,直接一次设置就可以自动适配各种分辨率.这个方法的注释如下: enum ResolutionPolicy { kResolutionExactFit, kResolutionNoBorder, kResolutionShowAll, kResolutionFixedHeight, kResolutionFixedWid

Android适配方案小结(三)

在Android适配方案小结(一).(二)中,我们了解了一些基本概念. 那么在具体开发中,我们应该注意什么呢. 首先,我们必须要知道,其实适配的关键在于两点: (1)不同分辨率设备的适配,这点在单位的使用上用dp.sp以及图片资源存放于不同的drawable文件夹就可以解决问题: (2)不同尺寸的适配,这点主要靠将相关值以及布局文件放置于不同的文件夹中来解决. 2.1 values文件夹 可以在工程下创建不同的values文件夹:values-sw480dp, values-sw600dp, v

Android 屏幕适配方案(百分比)

博客源址:Android 屏幕适配方案 1.概述 大家在Android开发时,肯定会觉得屏幕适配是个尤其痛苦的事,各种屏幕尺寸适配起来蛋疼无比.如果我们换个角度我们看下这个问题,不知道大家有没有了解过web前端开发,或者说大家对于网页都不陌生吧,其实适配的问题在web页面的设计中理论上也存在,为什么这么说呢?电脑的显示器的分辨率.包括手机分辨率,我敢说分辨率的种类远超过Android设备的分辨率,那么有一个很奇怪的现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦? 那么,到底是什么原

Android 目前最稳定和高效的UI适配方案

Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计一套UI尺寸适配方案,可以和小伙伴们详细的聊一聊这个问题.Android适配最核心的问题有两个,其一,就是适配的效率,即把设计图转化为App界面的过程是否高效,其二如何保证实现UI界面在不同尺寸和分辨率的手机中UI的一致性.这两个问题都很重要,一个是保证我们开发的高效,一个是保证我们适配的成效:今天

浅谈android如何同时适配pad和手机

前期的注意事项和技巧 前段时间公司要做的一个android app,同时要做到适配pad跟手机.刚开始觉得这根本不可能实现,因为我们市场上见到的app都是要两个版本的,分别是手机版和pad版.因为手机和屏幕的尺寸相差太大,所以一般都不会说一个app同时兼容两个版本. 为了做到屏幕的兼容,所以我专门去网上查找资料,看看目前市场上主流的手机尺寸和分辨率分别是多少.主要找到的情况如下图所示: 而pad的话每个厂家出产的pad的分辨率都会跟手机的一样,所以可以先做完手机页面的适配再考虑pad的页面适配.

开源,原创,实用Android 屏幕适配方案分享

说来惭愧,这段时间忙项目,有时间也拿来调侃人生,好久没有写过技术文章了) 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案.   已经用在一款成熟互联网 应用中,效果还不错 http://www.meilijie.com/ask/view/377116/http://www.meilijie.com/ask/view/377668/http://www.meilijie.com/ask/view/377838/http://www.meilijie.

Android最佳实践之SystemBar状态栏全版本适配方案

前言 自从MD设计规范出来后,关于系统状态栏的适配越受到关注,因为MD在5.0以后把系统状态栏的颜色改为可由开发者配置的,而在5.0之前则无法指定状态栏的颜色,所以这篇就说说使用Toolbar对系统状态栏的适配策略 主流App的适配效果 手Q在这方面适配非常好,将标题栏和状态栏合为一起了,和iOS效果一模一样,如下: 4.4.5.0+ 4.4以下版本 4.4以下版本则是系统默认的黑色状态栏,因为4.4以下没办法对状态栏进行改变和配置. 关于手Q的适配,对4.4以上所有版本都保留着一致的UI效果,