Android动态屏幕适配设置控件宽高等属性

了解作者更多

// -------- start genLayoutParams

//设置默认屏幕宽高,也就是你们UI设计师设置图纸的模板手机

public static int mCommonHeight = 1920;

public static int mCommonWidth = 1080;

public static int NO_PARAMS = -1001;//给定一默认不设置参数标志

//只指定宽高

public static void genLayoutParams(Context mContext, View view,

int height_px, int width_px) {

genLayoutParams(mContext, view, height_px, width_px, NO_PARAMS,

NO_PARAMS, NO_PARAMS, NO_PARAMS);

}

//只指定宽高 与 距离上下左右的margin

public static void genLayoutParams(Context mContext, View view,

int height_px, int width_px, int topMargin_px, int bottomMargin_px,

int leftMargin_px, int rightMargin_px) {

int mScreenHeight = Common.getScreenHeight(mContext);

int mScreenWidth = Common.getScreenWidth(mContext);

ViewGroup.MarginLayoutParams view_params = (MarginLayoutParams) view

.getLayoutParams();

if (NO_PARAMS != height_px) {

view_params.height = (int) (mScreenHeight * round(

(double) height_px / mCommonHeight, 3));

}

if (NO_PARAMS != width_px) {

view_params.width = (int) (mScreenWidth * round((double) width_px

/ mCommonWidth, 3));

}

if (NO_PARAMS != topMargin_px) {

view_params.topMargin = (int) (mScreenHeight * round(

(double) topMargin_px / mCommonHeight, 3));

}

if (NO_PARAMS != bottomMargin_px) {

view_params.bottomMargin = (int) (mScreenHeight * round(

(double) bottomMargin_px / mCommonHeight, 3));

}

if (NO_PARAMS != leftMargin_px) {

view_params.leftMargin = (int) (mScreenWidth * round(

(double) leftMargin_px / mCommonWidth, 3));

}

if (NO_PARAMS != rightMargin_px) {

view_params.rightMargin = (int) (mScreenWidth * round(

(double) rightMargin_px / mCommonWidth, 3));

}

view.setLayoutParams(view_params);

Utils.LOGE(TAG, "view_params.width = " + view_params.width);

Utils.LOGE(TAG, "view_params.height = " + view_params.height);

Utils.LOGE(TAG, "view_params.leftMargin = " + view_params.leftMargin);

Utils.LOGE(TAG, "view_params.rightMargin = " + view_params.rightMargin);

Utils.LOGE(TAG, "设置layoutparams");

}

//dp与px转换

public static int Dp2Px(Context context, double dp) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (dp * scale + 0.5f);

}

public static int Px2Dp(Context context, double px) {

px = (px / Common.mCommonHeight) * Common.getScreenHeight(context);

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (px / scale + 0.5f);

}

/**

* 提供精确的小数位四舍五入处理。

*

* @param number

*            需要四舍五入的数字

* @param scale

	 *            小数点后保留几位

* @return 四舍五入后的结果

*/

public static double round(Double number, int scale) {

if (scale < 0) {

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b = null == number ? new BigDecimal("0.0") : new BigDecimal(

Double.toString(number));

BigDecimal one = new BigDecimal("1");

return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

}

// -------- end genLayoutParams

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 08:36:51

Android动态屏幕适配设置控件宽高等属性的相关文章

动态获取手机屏幕宽高及动态设置控件宽高

1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; 22.根据屏幕宽度为控件设置动态设置宽高: imageView.setImageResource(R.drawable.newscar); L

Android 动态设置控件宽高度

LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控件textView当前的布局参数 linearParams.height = 20;// 控件的高强制设成20 linearParams.width = 30;// 控件的宽强制设成30 textView.setLayoutParams(linearParams); //使设置好的布局参数应用到控件

根据手机屏幕设置控件宽高

//获取手机宽度 WindowManager wm = (WindowManager) getActivity().getSystemService( Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); screenWidth = display.getWidth(); 给自己的控件设置宽度 LayoutParams params = yundong_left.getLayoutParams(); params.w

android安卓动态设置控件宽高

LayoutParams layoutParams=imageView.getLayoutParams(); layoutParams.width=100; layoutParams.height=200; imageView.setLayoutParams(layoutParams);

Android控件所共有属性ID、宽、高、背景、内容位置、状态、内容跟边界的间隙、边界跟其他控件边界的间隙

Android控件(包括布局)的所共有的属性: android:id="@+id/denglu_et_name"                     设置控件的id,denglu_et_name可以替换成你需要的id号名称 android:layout_width="wrap_content"        设置控件的宽 android:layout_height="wrap_content"       设置控件的高            

android 多屏幕适配 : 第一部分

1.在xml布局文件中,控件的宽度和高度用  dp ;   字体大小用 sp 2.根据屏幕的宽高来动态的适配 , 获取屏幕的宽高的两种方法: 第一种方法: /** * 屏幕的宽度 * 屏幕的高度 * @return */ public void initPhone1( Activity activity ){ int phone_Width = activity.getWindowManager().getDefaultDisplay().getWidth() ; //单位是 px int ph

[Android]自定义简易版日历控件

先来看看效果图,看看是不是各位大佬想要的: 特别的功能并不多,重点是讲解简易日历该如何构造,假若是项目着急要用的话,最好还是找一下其它人写好的日历(附加滑动改变日历日期等功能) ---------------------------------------------------------------------------------------华丽的分割线--------------------------------------------------------------------

Android打造万能自定义阴影控件

目录介绍 01.阴影效果有哪些实现方式 02.实现阴影效果Api 03.设置阴影需要注意哪些 04.常见Shape实现阴影效果 05.自定义阴影效果控件 06.如何使用该阴影控件 07.在recyclerView中使用注意点 01.阴影效果有哪些实现方式 阴影效果有哪些实现方式 第一种:使用CardView,但是不能设置阴影颜色 第二种:采用shape叠加,存在后期UI效果不便优化 第三种:UI切图 第四种:自定义View 否定上面前两种方案原因分析? 第一个方案的CardView渐变色和阴影效

C#winform中使用控件的Dock属性进行布局

想要实现如下布局,可以通过设置控件的Dock属性达到效果 1.拖放一个panel控件一个label控件(放在panel中)和一个treeView控件到TestForm中 2.设置panel的Dock属性为Top(设置BorderStyle属性为FixedSingle,这样显得美观些),设置treeView的Dock属性为Fill 3.需要注意的是要先把panel放到TestForm中,先放treeView就会使得treeView填充TestForm而被后放置的panel遮盖,如下所示 4.想要实