安卓系统webview更换_安卓日常开发问题总结:这些问题火候不够,随时变成删库跑路...

f0f5d68b0b3e4e3f9ebf2c13058accce.png

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

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 中文本空格效果无法体现,给字符串加上双引号

 中   文 " 中   文 "

注意:使用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后打不开指定的页面(根本就没反应)

121fdfa043be00399f08fe4f8cd45718.png

系统会自动弹出,但是进入设置打开即可。

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

8b1d52754718b8c72b2dc9bbe24a60f6.png

大意就是TextView的shadowRadius不能大于25,是xml代码中的问题,改小shadowRadius即可。

c51da7109bdbba6b8b81229df9d546d0.png

包括button下的部分模糊的情况也是该问题导致的。

12.分享链接至微信无法显示链接的缩略图

友盟分享链接如果内容中带有红包字样,那么图片会失效显示不出来(分享的主体倒是可以自己看到)

13.小米手机上的App使用浏览器打开尾缀带apk的地址无法正常下载安装

阿里云、应用宝的地址是会被拦截到使用小米手机系统自带的下载器进行下载安装,而这个下载器会默认使用迅雷下载组件,阿里云的地址下载完毕后点击下载完成的push会显示文件无法识别(而应用宝的地址能正常安装),小米系及华为应用的下载地址以及非.apk结尾的地址则会按照正常流程跳入浏览器进行下载。关闭小米手机上的迅雷下载组件的功能后,则可以通过点击push正常安装,不会出现文件无法识别的问题。

所以解决这个问题的很简单,把下载地址换成非apk结尾的地址即可

14.桌面图标不更换的原因

android:roundIcon="@mipmap/logo"

application中这个属性也要设置

15.优化打开应用白屏问题

白屏的原因是系统本身启动是需要时间的(背景默认就是白色)。
一般做法:

设置Theme

针对具体的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肯定没写错,但是为啥高版本可以,低版本就报错呢?

6c920c2af0423b0d27a44dbf7f42dc82.png

这是因为图片资源文件被放到了低版本文件夹中去了,所以高版本inflate不到。

19.EditText digits属性

android:digits="0123456789"

常用来限定EditText的输入格式。

20. android studio 全局搜索结果不全

缓存原因

22dfd7ba5478debf7593a6fbc5e6d0dd.png

21. bottomSheetDialog设置圆角

new BottomSheetDialog(context,R.style.BottomSheetDialog)//设置style

22.ScrollView中的LinearLayout的layout_weigt无效

ScrollView中添加:

android:fillViewport="true" 

23.Process 'command 'E:androidoolsdkbuild-tools26.0.3aapt.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.浮点型精度问题

9f1d79a7eb0ba2a740f85d783d2ecb12.png

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

最后

不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。

关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。

62c8145cd6773aca6d70083e661ec983.png

这里最后分享耗时一年多整理的一系列Android学习资源:Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记等等。

这些内容均免费分享给大家,需要完整版的朋友,直接转发+点赞+私信回复【资料】一键领取!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值