Don Blog

Thinking will not overcome fear but action will.

读《阿里巴巴Android开发手册》笔记

自从个人域名博客关闭以后就转战至了github,但是账号注册了一年多了一篇正经的博文没写过,今日阅读了阿里巴巴Android开发手册后突然又有了写博文的冲动, 因此在此做些笔记,以规范自己。 一、基本组件 1、【强制】Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检查, 避免找不到合适的调用组件,造成 Activit...

让 AndroidStudio支持Java8及Lambda表达式

AndroidStudio从2.1开始官方通过Jack支持Java8,从而使用Lambda等特性。 配置非常简单,只需2步: 1、将如下代码添加到你module的 build.gradle android { //让android studio支持java8 compile...

解决ConstraintLayout 与ScrollView 嵌套时ScrollView 内容没有完全显示的问题

ConstraintLayout 布局中有ScrollView 时,ScrollView 的宽高都要设置为0dp 才可以正确的约束布局,如下所示: <ScrollView android:layout_width="0dp" android:layout_height="0dp" android:scrollb...

获取安装包签名

开发中经常会用到第三方分享的功能,因此就需要获取安装包签名,代码中获取签名的方式如下: PackageManager manager = getPackageManager(); /** 通过包管理器获得指定包名包含签名的包信息 **/ PackageInfo packageInfo = null; try { pack...

AppCompatSpinner的使用及样式设置

本文讲解内容包含以下几个内容: 1. AppCompatSpinner字体大小及颜色设置 2. 分割线添加 3. 选中item时颜色变化动画 效果图如下: 实现以上效果,分3步: 1.下拉列表框效果实现 将以下代码复制到styles.xml中即可 <style name="spinner" parent="Widget.AppCompat.DropDown...

Android/Java并发面试题

Java并发面试题 一、线程池相关 (⭐⭐⭐) 1、什么是线程池,如何使用?为什么要使用线程池? 答:线程池就是事先将多个线程对象放到一个容器中,使用的时候就不用new线程而是直接去池中拿线程即可,节 省了开辟子线程的时间,提高了代码执行效率。 2、Java中的线程池共有几种? Java有四种线程池: 第一种:newCachedThreadPool 不固定线程数量,且支持最大为...

ViewGroup为什么不调用onDraw

正常情况下,我们重写LinearLayout的onDraw方法,它是不会被调用的,这篇文章就来分析一下原因和解决方法。 一,现象 <com.test.demo.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_absolute" ...

Android性能优化:布局优化

Android性能优化:布局优化 扩展 Space组件 在ConstraintLayout出来前,我们写布局都会使用到大量的margin或padding,但是这种方式可读性会很差,加一个布局嵌套又会损耗性能 鉴于这种情况,我们可以使用space,使用方式和View一样,不过主要用来占位置,不会有任何显示效果 Space使用方式及情景 ConstraintLayout布局...

Android 6.0以上动态申请权限

话不多说,直接上代码 package cn.rjgc.project.util; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; impor...

Android全局异常处理方案

话不多说,直接上代码 package cn.rjgc.project.util; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import andro...