android杂项笔记,关于横屏纵屏问题,混淆问题备份

来源:互联网 发布:打怪升级的网络手游 编辑:程序博客网 时间:2024/06/11 10:56
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.


上面错误导致的原因是所有子Module都不能配置混淆,即minifyEnabled true








所有被主Module直接或间接引用的子Module的AndroidManifest.xml文件内容都会合并到主Module的AndroidManifest.xml文件中,
包括权限,注册的组件等


所有Module下res目录中的内容也会合并到主Module的res对应目录和文件中。




在主Module中配置的混淆,会作用在所有的Module上,即其他的Module也会被混淆。




layout目录描述:
layout-port为竖屏时的布局目录。
layout-land为横屏时的布局目录。
layout为默认目录,即:
竖屏时,系统会首先寻找layout-port目录的布局,如果找不到则使用layout目录的布局;
横屏时,系统会首先寻找layout-land目录的布局,如果找不到则使用layout目录的布局。




屏幕适配方案的缺陷,针对横屏的时候:
发现日常使用的手机有两种常见的分辨率和density值
1280x720的分辨率,density值为2,但是发现:widthDP值为360dp,heightDP值为640dp
1920x1080的分辨率,density值为3,但是发现:widthDP值为360dp,heightDP值为640dp

比喻很巧,你的测试机widthDP值为360dp,heightDP值为640dp




于是在横屏时,手机的widthDP值为360dp,则系统会寻找默认的values目录下的dimens.xml文件的dp_xxx变量。
注意了,此时,如果手机切换成横屏,那么手机的widthDP值为640dp,故此时系统会寻找values-w640dp目录下的dimens.xml中的dp_xxx变量。
此时,如果页面上有个按钮的宽高都为28dp,而你使用了@dimen/dp_28,实际值则是49.78dp( 根据比例计算28*(640.0f/360.0f) ),故会变大很多。
所以没有办法,横屏时的页面不能做适配了,
在横屏时我一般是从新进行页面编辑,只要控件ID没有在acivity中有代码操作,两个界面可以有不同的控件和布局





在自定义控件的时候,控件内容动态生成了TextView,但是想提供方便在空间容器上提供设置内部TextView字体的属性,注意看下面:
1、获取字体大小:
imageTextSize = array.getDimensionPixelSize(attr,
                            (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, TEXT_SIZE, getResources().getDisplayMetrics()));
2、设置给TextView:
textView.setTextSize(imageTextSize);


然后和普通的TextView对比,有没有发现textView.getTextSize()值一样,但是自定义控件内部的TextView字体却大一倍?




原因在于,我们通过步骤一获取到字体后,必须这么设置字体才行  textView.getPaint().setTextSize(imageTextSize);
是画笔的字体大小。