android 大屏屏幕适配,Android屏幕适配

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

详细说明参见public class AutoUtils {

private static int displayWidth;

private static int displayHeight;

private static int designWidth;

private static int designHeight;

private static double textPixelsRate;

public static void setSize(Context act, boolean hasStatusBar, int designWidth, int designHeight) {

if (act == null || designWidth < 1 || designHeight < 1) return;

WindowManager wm = (WindowManager) act.getSystemService(Context.WINDOW_SERVICE);

int width = wm.getDefaultDisplay().getWidth();

int height = wm.getDefaultDisplay().getHeight();

if (hasStatusBar) {

height -= getStatusBarHeight(act);

}

AutoUtils.displayWidth = width;

AutoUtils.displayHeight = height;

AutoUtils.designWidth = designWidth;

AutoUtils.designHeight = designHeight;

double displayDiagonal = Math.sqrt(Math.pow(AutoUtils.displayWidth, 2) + Math.pow(AutoUtils.displayHeight, 2));

double designDiagonal = Math.sqrt(Math.pow(AutoUtils.designWidth, 2) + Math.pow(AutoUtils.designHeight, 2));

AutoUtils.textPixelsRate = displayDiagonal / designDiagonal;

}

public static int getStatusBarHeight(Context context) {

int result = 0;

try {

int resourceId = context.getResources().getIdentifier(

"status_bar_height", "dimen", "android");

if (resourceId > 0) {

result = context.getResources().getDimensionPixelSize(

resourceId);

}

} catch (Resources.NotFoundException e) {

e.printStackTrace();

}

return result;

}

public static void auto(Activity act) {

if (act == null || displayWidth < 1 || displayHeight < 1) return;

View view = act.getWindow().getDecorView();

auto(view);

}

public static void auto(View view) {

if (view == null || displayWidth < 1 || displayHeight < 1) return;

AutoUtils.autoTextSize(view);

AutoUtils.autoSize(view);

AutoUtils.autoPadding(view);

AutoUtils.autoMargin(view);

if (view instanceof ViewGroup) {

auto((ViewGroup) view);

}

}

private static void auto(ViewGroup viewGroup) {

int count = viewGroup.getChildCount();

for (int i = 0; i < count; i++) {

View child = viewGroup.getChildAt(i);

if (child != null) {

auto(child);

}

}

}

public static void autoMargin(View view) {

if (!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))

return;

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

if (lp == null) return;

lp.leftMargin = getDisplayWidthValue(lp.leftMargin);

lp.topMargin = getDisplayHeightValue(lp.topMargin);

lp.rightMargin = getDisplayWidthValue(lp.rightMargin);

lp.bottomMargin = getDisplayHeightValue(lp.bottomMargin);

}

public static void autoPadding(View view) {

int l = view.getPaddingLeft();

int t = view.getPaddingTop();

int r = view.getPaddingRight();

int b = view.getPaddingBottom();

l = getDisplayWidthValue(l);

t = getDisplayHeightValue(t);

r = getDisplayWidthValue(r);

b = getDisplayHeightValue(b);

view.setPadding(l, t, r, b);

}

public static void autoSize(View view) {

ViewGroup.LayoutParams lp = view.getLayoutParams();

if (lp == null) return;

if (lp.width > 0) {

lp.width = getDisplayWidthValue(lp.width);

}

if (lp.height > 0) {

lp.height = getDisplayHeightValue(lp.height);

}

}

public static void autoTextSize(View view) {

if (view instanceof TextView) {

double designPixels = ((TextView) view).getTextSize();

double displayPixels = textPixelsRate * designPixels;

((TextView) view).setIncludeFontPadding(false);

((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, (float) displayPixels);

}

}

public static int getDisplayWidthValue(int designWidthValue) {

if (designWidthValue < 2) {

return designWidthValue;

}

return designWidthValue * displayWidth / designWidth;

}

public static int getDisplayHeightValue(int designHeightValue) {

if (designHeightValue < 2) {

return designHeightValue;

}

return designHeightValue * displayHeight / designHeight;

}

}

初始化尺寸public class BaseApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

Log.e("Tag", "初始化设置");

AutoUtils.setSize(this, true, 1080, 1920);

}

}如果有横竖屏切换,可以再次设置,不过需要在销毁的时候重置回来。

页面绑定public abstract class BaseActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(initView());

AutoUtils.auto(this);

initEvent();

}

protected abstract int initView();

protected abstract void initEvent();

}对于不是activity的可以使用 AutoUtils.auto(view);比如用在fragment中,用在recycleView,ListView等列表中在布局使用px即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值