包括button下的部分模糊的情况也是该问题导致的。
12.分享链接至微信无法显示链接的缩略图友盟分享链接如果内容中带有红包字样,那么图片会失效显示不出来(分享的主体倒是可以自己看到)
13.小米手机上的App使用浏览器打开尾缀带apk的地址无法正常下载安装阿里云、应用宝的地址是会被拦截到使用小米手机系统自带的下载器进行下载安装,而这个下载器会默认使用迅雷下载组件,阿里云的地址下载完毕后点击下载完成的push会显示文件无法识别(而应用宝的地址能正常安装),小米系及华为应用的下载地址以及非.apk结尾的地址则会按照正常流程跳入浏览器进行下载。关闭小米手机上的迅雷下载组件的功能后,则可以通过点击push正常安装,不会出现文件无法识别的问题。
所以解决这个问题的很简单,把下载地址换成非apk结尾的地址即可。
14.桌面图标不更换的原因android:roundIcon="@mipmap/logo"
application中这个属性也要设置
15.优化打开应用白屏问题白屏的原因是系统本身启动是需要时间的(背景默认就是白色)。
一般做法:
设置Theme
<style name="MNoActionBar" parent="Theme.AppCompat.NoActionBar">
<!--<item name="android:windowFullscreen">false</item>-->
<!--<item name="android:windowBackground">@drawable/welcome</item>//此行可以给window设置背景图片,单独设置此项不设置透明的话是没有延迟打开的情况(无白屏切换,和启动页使用同一资源则无缝切换,但默认是全屏的)-->
<item name="android:windowIsTranslucent">true</item>//设置透明之后不会有和页面背景图之间色值的闪烁,同时点击桌面图标时会有些延迟进入页面
</style>
针对具体的activity:如果一个activity中既要显示全屏的启动图,也要等到内容加载完毕后显示最新内容(非全屏),那么就应该对相关方法的进行判断设置:
private void setFullScreenEnable(boolean isEnable) {
if (isEnable) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //隐藏状态栏
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //显示状态栏
}
}
如果在含有Webview的页面中,则可以分别在onCreate方法和onpageFinished的回调中进行设置即可。
特殊情况:如果整个页面是加载的H5,即便使用了上面的设置,还是会有白屏一闪而过的情景。这是H5页面本身渲染导致的,那么目前的处理方法是针对启动页做个延时dismiss的效果,这样就遮盖了白屏一闪而过的瞬间:
fullLoadingView.postDelayed(new Runnable() {//需要做下延迟,否则会出现页面一瞬间白屏的情况(应该是页面渲染H5的原因)
@Override
public void run() {
fullLoadingView.setVisibility(View.GONE);
setFullScreenEnable(false);
}
}, 300);
16.打开外部应用时,多个页面被调起
B应用打开A应用的cActivity时,A应用的其它Activity也会被打开(之前存在的,A应用一直在后台)
这是taskAffinity的缘故,因为共用了同一个任务栈,所以在manifest文件中设置另外一个任务栈即可:
android:taskAffinity=".payAct"
17.获取webview的bitmap
根据得到网页的高度来设置webview的高度。同时h5做好适配,等比缩放宽高。与此同时可能出现,获取bitmap信息有空白的ui内容,这时候要做延迟获取,因为onPageFinished方法只是拉取了代码,并不表示页面渲染完毕。
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
设置为NARROW_COLUMNS时,如果webview本身不是全屏的,则分享出去的图片则不能铺满全屏。
18.Error inflating class ImageViewXml肯定没写错,但是为啥高版本可以,低版本就报错呢?
这是因为图片资源文件被放到了低版本文件夹中去了,所以高版本inflate不到。
19.EditText digits属性android:digits="0123456789"
常用来限定EditText的输入格式。
20. android studio 全局搜索结果不全缓存原因
<style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
</style>
<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@android:color/transparent</item>
</style>
new BottomSheetDialog(context,R.style.BottomSheetDialog)//设置style
22.ScrollView中的LinearLayout的layout_weigt无效
ScrollView中添加:
android:fillViewport="true"
23.Process 'command 'E:\android\tool\sdk\build-tools\26.0.3\aapt.exe'' finished with non-zero exit value 1
重启清缓存,构建、提高版本都无效,原因在于编码不规范!
android:drawableTop="2dp" //错误代码!!!
一般出现该中问题可以比的下文件的history看看有哪些资源文件引用等不规范的地方,实在找不出就回退版本来看下。
24.dialog中的TextView显示不全的问题是因为使用了contentTv.setText(Html.fromHtml(content));
而不是直接的contentTv.setText(content);
前者的换行也没用,也有可能因为其文本含有错误的HTML标签文本的缘故,所以需要在使用时要考虑下兼容。
所以,结合业务情况来使用BigDecimal会好些。
最后不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。