Android 日常开发问题总结

日常开发中碰到了各种开发问题,捡选了一部分分享出来。有些问题非常简单,属于编码规范类,有些属于特定情况下碰到的问题,不是很常见。不太准确的地方,欢迎共同探讨下~

1.requestFeature() must be called before adding content

requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题

需要在onCreate之前调用,否则在4.4.2的机型上会报错:

2.小米6.0系统打开浏览器时闪退

Calling startActivity() from outside of an Activity context requires the FLAG_NEW_TASK flag.

public static void openBrowser(Context context, String url) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}

也就是要加上面的FLAG_ACTICITY_NEW_TASK(其它手机看到是ok的)

3.设置TextView的颜色值无效

   titleTv.setTextColor(colorId);//错误的方式(常见封装类调用)
   titleTv.setTextColor(ContextCompat.getColor(context,colorId));//正确的方式

4.国际化引用问题

a.静态/类全局变量需要单独判断;
b.string 中文本空格效果无法体现,给字符串加上双引号

<string name="Chinese"> 中   文 </string>
<string name="Chinese">" 中   文 "</string>

注意:使用Application.getString的方式,在切换语言后,并没有切换这种方式引用的资源内容。可以改为另外的activity里面的getString方法获取

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: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 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" 

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标签文本的缘故,所以需要在使用时要考虑下兼容。

25.浮点型精度问题

demo

所以,结合业务情况来使用BigDecimal会好些。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容