安卓APP笔记(一)小技巧

一、去除顶部标题栏

  1. 打开 res -> values -> styles

  2. 修改 DarkActionBar 为 NoActionBar

或者:在activity 的super.oncreat 下面加一句代码:

 requestWindowFeature(Window.FEATURE_NO_TITLE);

注意,这种方法要求activity应该继承activity,而不是AppCompatActivity,否则会无效;

二、背景设置透明度

 android:background="#55ffffff"

在#后边加数字即可,00是全透明,ff是不透明

三、修改APP图标

第一种:(最简单的方法) 将你准备好的 图标放入res目录下的drawable,在AndroidManifest.xml文件中,找到android:icon以及android:roundIcon这两个属性,设置为你放入的图标文件。

imagetext

如图,appicon就是我准备替换的文件。注意保存时,保存名称不能有大写字母与空格,否则编译时会报错,此外,查到的资料中图片格式建议保存为.png。不过自己试验过.jpg与.png都是可以正确替换图标的。

imagetext

在这里,这两个属性都能对图标进行设置,在设置时只使用一个也可以达到效果,但如果两个同时使用的话,属性指定的对象需要设置一致。若不一致,我测试结果是显示的roundIcon指定的对象,找到android:roundIcon 属性的解释: android:roundIcon 属性指定一个图标,但只有你需要给应用设置一个特别的圆形图标时才要用到这个属性。

第二种:(稍微复杂) 更详细的解释可以看这两篇文章 Android神兵利器之Image Asset Studio - 简书

[Android神兵利器之Image Asset Studio]

application中 android:icon 和 android:roundIcon 的区别_CheacK66的博客-CSDN博客 [application中 android:icon 和 android:roundIcon 的区别]

在这里之给出具体的修改方法:

imagetext

如图,找到Image Asset点击。显示如下

imagetext

在第3步中选择你准备的图标作为前景,如图:

imagetext

至于第2步背景的选择,个人认为可以默认。 关于前景跟背景的内容,在前面的链接内有相应的说明,大家不理解的可以去了解一下。 然后,就可以next,finish。

imagetext

imagetext

imagetext

得到新建的文件。 在这里说明一下ic_launcher_round.png是Image Asset生成的圆形图标,可以在AndroidManifest文件中设置,方法如1。 ic_launcher-web.png 是在Google Play中显示app介绍时使用。

总结一下,方法二生成的图标的适配效果更好,方法一的效果可能会跟预先设想的效果存在出入。

四、Android WebView 加载失败

net::ERR_CLEARTEXT_NOT_PERMITTED

首先保证App申明了网络权限

 <uses-permission android:name="android.permission.INTERNET" />

  1. 解决办法(1):

在Application中打开一个开关

 <manifest ...>
 ​
   <application
 •    android:usesCleartextTraffic="true"
 ​
   </application>
 </manifest>
  1. 解决办法(2):

res 下新建 xml 目录,创建文件:network_security_config.xml ,内容如下:

 <?xml version="1.0" encoding="utf-8"?>
 <network-security-config>
   <base-config cleartextTrafficPermitted="true" />
 </network-security-config>

在 AndroidManifest.xml 的 application 标签添加配置:

 <manifest ...>
   <application
 •    android:networkSecurityConfig="@xml/network_security_config"
 ​
   </application>
 </manifest>

解决办法(3):【推荐】

服务器和本地应用都改用 https

解决办法(4):

targetSdkVersion 降级回到 27

五、在子线程中修改UI

一般情况下在子线程更新UI是会报错的,因为在ViewRootImpl中会通过checkThread进行检查;

出错肯定是触发了checkThread,但是只要不触发就可以顺利更新UI,而setText不是在任何情况下都会触发checkThread的。

在setText方法中会调用 checkForRelayout,而这个方法就展现了不会触发checkThread的原因。checkThread是在requestLayout中才会进行的,所有这里只要不调用requestLayout就不会进行checkThread。

只要View的大小不是wrap_content,而是match_parent或者是固定不变的dp,就都不会触发requestLayout,自然就可以在子线程更新了。

六、Android开发中横竖屏切换时重新加载的问题解决方案

解决方法:在manifest中,设置该Activity的configChanges为:

 android:configChanges="screenSize|keyboardHidden|orientation"

这样当横竖屏切换时,Activity的状态也不会改变了。

猜你喜欢

转载自blog.csdn.net/aniclever/article/details/120262136