郭霖博客学习

标题

郭霖 CSDN
小目标:每周3篇,18年看完104篇。

怎么才能知道自己手机屏幕的密度呢?你可以使用如下方法先获取到屏幕的dpi值:
float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;

标题

项目结构分析
dpi详解:
mipmap文件夹只是用来放置应用程序的icon的,仅此而已。那么在此之前,我们都是把应用程序的icon图标和普通的图片资源一起放到drawable文件夹下的。将icon放置在mipmap文件夹还可以让我们程序的launcher图标自动拥有跨设备密度展示的能力

当引用一张图片时,Android会先去本机对应的hdpi下去找,找到引用,不会缩放该图。如果没找到,会优先去高密度下去找,到最高密度下仍没有,就从最适合分辨率往低找。以xxhdpi举例:
drawable-xxhdpi -> drawable-xxxhdpi -> drawable-nodpi -> drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi。
最终,如果是从更高密度下引用来的图片,会进行缩小操作(直接加载会出现密度过高);从低密度下引用来的图片,会进行放大操作。drawable-nodpi文件夹,这个文件夹是一个密度无关的文件夹,放在这里的图片系统就不会对它进行自动缩放。至于具体的缩放数据:每一种密度的dpi范围都有一个最大值,这个最大值之间的比例就是图片会被系统自动放大的比例。(郭神测算,未有文档支持。大致是很精确的)

一张原图片被缩小了之后显示其实并没有什么副作用,但是一张原图片被放大了之后显示就意味着要占用更多的内存了。一个xxhdpi设备,从mdpi加载图片,会进行放大操作,放大就会占用更多内存。找到当前主流机型的分辨率,就是当前最佳的分辨率级别。

Getting Your Apps Ready for Nexus 6 and Nexus 9

交互式控件
AlertDialog,会打断用户当前的操作,谨慎一点好。尽量使用appcompat-v7库中也提供了一个AlertDialog类,获得6.0之前的较好体验。

Toast, 建议封装,避免长时间弹。复用一个Toast。传当前Activity的context会内存泄露,传Application的。

SnackBar,体验更好。国内很少用。传View时,传根View。

View rootView = ((ViewGroup) (activity.findViewById(android.R.id.content))).getChildAt(0);make的时候填这个view就可以了

适配

  1. 合理布局。多使用wrap、match,dp;
  2. 巧用RelativeLayout,ConstraintLayout;
  3. 使用布局限定符,配合布局别名结合多布局;
  4. 根据分辨率,使用多套图。
  5. 使用AutoLayout。

优化
1启动页优化
styles.xml中主题相关的代码

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ......
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style>

让程序在初始化的时候窗口是透明的,初始化结束后程序主界面才会显示出来,从而也就完全看不到白屏界面了。

记录

03

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值