首页 > 技术文章 > Android基础知识注意点

dearnotes 2020-05-15 12:10 原文

1.线性布局中的对齐(易混淆)

在LinearLayout中:
android:gravity用于指定文字在控件中的对齐方式
android:layout_gravity用于指定控件在布局中的对齐方式
当排列方向是horizontal时,水平方向上的长度不是固定的,每添加一个控件,水平方向长度都会变化,因此无法指定该方向对齐方式。
当排列方向是vertical时,竖直方向上的长度不是固定的,每添加一个控件,竖直方向长度都会变化,因此无法指定该方向对齐方式。

2.layout_width和layout_height起作用的前置条件

layout_width是指定当前控件在布局中的宽度,layout_height是指定当前控件在布局中的高度这当然都是说烦了的。但是有一点需要注意一下,layout_width和layout_height针对于控件起作用是因为当前控件在布局当中。每次创建activity_main时自动生成的布局中(如下图android.support.constraint.ConstraintLayout中的layout_width和layout_height)起作用是因为在MainActivity中调用setContentView()时Android会自动在最外层嵌套一个FrameLayout,所以此时layout_width和layout_height才会起作用。

3.Android 9.0之后网络配置 (因为Android 9.0就开始强制要求https传输了,我们如果想要保持正常的http通信就要经过一定的配置)

第一种方式:

1.清单文件中添加

 android:networkSecurityConfig="@xml/network_security_config"

2.res目录下新建xml文件夹,在xml文件夹下新建配置文件network_security_config

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
第二种方式:

在清单文件的<application标签中添加 android:usesCleartextTraffic="true"。

两种方式是一样的,明显第二种简单。我们先看第一种,它是配置了一个属性cleartextTrafficPermitted(明文传输权限,http是用明文传输,https是用加密的方式传输,设置为true,这样我们的http通信就能够正常使用了。)第二钟方式一样的意思。

4.Android控件的visibility属性:visibile,invisible,gone

visibile:控件可见
invisible:控件不可见(控件占用空间)
gone:控件不可见(控件不占用空间)

5.容易让人忽略的drawable

密度限定符 说明
ldpi适用于低密度 (ldpi) 屏幕 (~ 120dpi) 的资源。
mdpi 适用于中密度 (mdpi) 屏幕 (~ 160dpi) 的资源(这是基准密度)。
hdpi 适用于高密度 (hdpi) 屏幕 (~ 240dpi) 的资源。
xhdpi 适用于加高 (xhdpi) 密度屏幕 (~ 320dpi) 的资源。
xxhdpi 适用于超超高密度 (xxhdpi) 屏幕 (~ 480dpi) 的资源。
xxxhdpi 适用于超超超高密度 (xxxhdpi) 屏幕 (~ 640dpi) 的资源。
nodpi 适用于所有密度的资源。这些是与密度无关的资源。无论当前屏幕的密度是多少,系统都不会缩放以此限定符标记的资源。
tvdpi 适用于密度介于 mdpi 和 hdpi 之间的屏幕(约 213dpi)的资源。这不属于“主要”密度组。它主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将视情况对其进行缩放。如果您发现有必要提供 tvdpi 资源,应按一个系数来确定其大小,即 1.33*mdpi。例如,如果某张图片在 mdpi 屏幕上的大小为 100px x 100px,那么它在 tvdpi 屏幕上的大小应该为 133px x 133px。

每当您引用 @drawable/awesomeimage 时,系统便会根据屏幕 dpi 选择相应的位图。如果您没有为某个密度提供特定于密度的资源,那么系统会选取下一个最佳匹配项并对其进行缩放以适合屏幕。

6.ImageView scaleType属性

1> android:scaleType="centerCrop"
以原图的几何中心点和ImagView的几何中心点为基准,按比例扩大(图片小于View的宽时)图片的size。意思是当图片小于
ImageView的大小时,居中显示,不缩放,如果大于 ImageView时则按比例扩大然后截取中间的图片显示
2> android:scaleType="fitCenter"
把图片按比例扩大(缩小)到View的宽度,居中显示 。FIT_CENTER 保持横宽比,对图片进行拉伸或缩放,原则是:
1)图片能完整显示;
2)图片宽或高至少有一样与ImageView的相同;
3)处理过的图片居中显示。
更多参考https://my.oschina.net/u/2541146/blog/603536

推荐阅读