Android 日常开发问题总结:这些问题火候不够,随时变成删库跑路!
5.魅族 7.0 的系统在 webview 中点击后闪退
ActivityManagerForce removing ActivityRecord{6dd5804 u0 包名/当前 WebviewActivity t8819}: app died, no saved state
不支持 onCustumView 方法,去掉即可
6.button 上的英文默认为大写
android:textAllCaps="false"
7.vivo 上收到 push 后打不开指定的页面(根本就没反应)
系统会自动弹出,但是进入设置打开即可。
8.TextView 显示不全
TextView 使用 WrapContent,lines=1 但是内容显示不全
只能显示在屏幕内的部分,在屏幕外的部分,在属性动画拉出来看的时候就没有。
(这种问题发生在自定义跑马灯控件时)
public static int getTextViewLength(TextView view, String text) {
TextPaint paint = view.getPaint();
int textLength = (int) Layout.getDesiredWidth(text, 0, text.length(), paint);
return textLength;
}
然后给 TextView 设置宽度。
9. No Activity found to handle Intent { act=android.intent.action.VIEW_DOWNLOADS flg=0x10000000 }
三星 SM-C7000(C7) 6.0.1 的系统就会出现在这个问题
if(intent.resolve(context.getPackageManager))!=null){
...
}
使用隐式 intent 进行 startActivity 时,最好加上该种判断和 try catch,因为保不准哪种机型就出问题了
10.设置 dialog 边角
getWindow().setBackgroundDrawableResource(R.drawable.widget_dialog_round_corner);
11.三星机型报错 E/rsC++(16241): RS CPP error: Blur radius out of 0-25 pixel bound
大意就是 TextView 的 shadowRadius 不能大于 25,是 xml 代码中的问题,改小 shadowRadius 即可。
包括 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: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 做好适配,等比缩放宽高。与此同时可能出现,获取 bi
tmap 信息有空白的 ui 内容,这时候要做延迟获取,因为 onPageFinished 方法只是拉取了代码,并不表示页面渲染完毕。
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
设置为 NARROW_COLUMNS 时,如果 webview 本身不是全屏的,则分享出去的图片则不能铺满全屏。
18.Error inflating class ImageView
Xml 肯定没写错,但是为啥高版本可以,低版本就报错呢?
这是因为图片资源文件被放到了低版本文件夹中去了,所以高版本 inflate 不到。
19.EditText digits 属性
android:digits="0123456789"
常用来限定 EditText 的输入格式。
20. android studio 全局搜索结果不全
缓存原因
21. bottomSheetDialog 设置圆角
<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"
评论