一、关于android 6.0之后的动态权限申请
判断是否是需要运行时权限的标记就是targetSDKVersion,当targetSDKVersion<23的时候,仅在安装时赋予权限,使用时将不被提醒,当targetSDKVersion≥23的时候才会使用新的运行时权限规则。
推荐一个github上关于动态权限申请的开源项目:
implementation 'com.yanzhenjie:permission:1.0.5'
二、EventBus使用
注解类
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface BindEventBus {
}
BaseActivity类
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (this.getClass().isAnnotationPresent(BindEventBus.class)) {
EventBus.getDefault().register(this);
}
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
}
其他Activity
@BindEventBus
public class AddEmployeeActivity extends BaseActivity {
...
}
需要注册EventBus的,就添加这个注解就可以了,不添加就是不需要注册,更加方便简洁。
三、android屏幕适配
为什么要适配我就不多赘述了,直接说解决方案
ScreenMatch
- ScreenMatch
在Android studio中安装ScreenMatch插件,File -> Settings -> Plugin -> Browse Repositories -> 搜索screenMatch ->install. - 添加dimens.xml
在项目的默认 values 文件夹中需要一份 dimens.xml 文件,点击这里,复制过来即可 - 执行生成
插件安装好后,在项目的任意目录或文件上右键,选择 ScreenMatch 选项,然后Select module选择app,点击OK。 - 根据设计图填写最小宽度基准值,并填写需要适配的设备最小宽度 dp 值
打开默认生成的screenMatch.properties 文件,参数配置如下:
base_dp = 375
最小宽度基准值
match_dp = ...
需要适配的宽度
ignore_dp = ...
忽略适配的宽度
具体可参考这篇文章
AutoSize
- 配置
基于头条屏幕方案的AndroidAutoSize,使用方式,先在module下的build.gradle下添加依赖
implementation 'me.jessyan:autosize:1.1.2'
然后在module的AndroidManifest权限菜单下添加基本设计图的尺寸,这里我们是使用360*630dp作为基本尺寸单位,这样配置工作就完成了
<manifest>
<application>
<meta-data
android:name="design_width_in_dp"
android:value="360"/>
<meta-data
android:name="design_height_in_dp"
android:value="640"/>
</application>
</manifest>
头条的适配方案是选择高度或宽度两者之一为基准进行适配(姑且不管原理),在该库的AutoSizeConfig类的源码中我们可以看到isBaseOnWidth默认就是true,也就是说改库默认就是以宽度进行适配的
- 宽度适配,高度适配,取消适配
框架默认是使用宽度适配的,因此我们不需要对Activity进行操作,而如果是HorizontalScrollView,宽度是不确定的,高度是确定的,就适合以高度为基准进行适配
在HeightActivity中实现CustomAdapt接口,实现isBaseOnWidth方法,返回false表示不要以宽度为基本适配,然后在getSizeInDp方法中填写基准设计图高度的尺寸
class HeightActivity : AppCompatActivity() , CustomAdapt {
//取消以宽度为基准进行适配
override fun isBaseOnWidth(): Boolean {
return false
}
//返回高度的单位尺寸
override fun getSizeInDp(): Float {
return 640f
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_height)
}
}
我们如果想取消屏幕适配,就让Activity实现CancelAdapt接口。
具体查看这篇文章
四、多图选择器
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.2.3'
github地址查看这里
五、android开源库
推荐一个Android开源库集合
六、android studio获取SHA1方法
查看这篇文章
七、集成芝麻信用授权
八、三方sdk
九、SeekBar、ProgressBar、RatingBar
SeekBar,查看这里
ProgressBar,查看这里
RatingBar,查看这里
十、Retrofit
Retrofit2 Post请求添加Json类型参数,查看这里