本文持续更新,主要记录日常Android开发过程中遇到的一些问题及解决办法和需要注意的一些点。
建议每个Android开发者都搭配一套抓包的环境(Charles、Fiddler),这样就能很方便的看到打开一个页面后发起了哪些网络请求、时序,以及每个请求的耗时、数据包大小,便于进行接口调试、优化等。
ListView的headerView和footerView设置setVisibility(View.GONE)无效,headerView和footerView虽然不显示了,但还是会占位,会显示一块空白区域。如果headerView和footerView不打算使用了,可是调用ListView的removeHeaderView()、removeFooterView()方法;如果有多个headerView,只是想展示隐藏其中的一个,后面可能还会用到再显示出来,可以使用下面的方法:
123456789FrameLayout frameLayout = new FrameLayout(this);listView.addFooterView(frameLayout);............//For adding footerViewframeLayout.removeAllViews();frameLayout.addView(mFooterView);//For hide FooterViewframeLayout.removeAllViews();使用自定义shape的方式作为Button的背景时,开发机上显示白色的,但在有些手机上显示出来的颜色有可能是黑色的,原因在于不同的品牌和ROM预置的主题风格不同,有些是light,有些可能会是dark。解决的办法是在定义shape的时候指定solid:
123456789101112131415161718<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape android:shape="oval"><solid android:color="@color/transparent" /><stroke android:width="0.5dp" android:color="@color/t_grey_title" /><corners android:radius="2dp" /></shape></item><item><shape android:shape="oval"><solid android:color="@color/transparent" /><stroke android:width="0.5dp" android:color="@color/bg_line" /><corners android:radius="2dp" /></shape></item></selector>通过Intent调起手机拨号页面的功能大多数APP都有,但是有一点需要注意,该操作运行在没有电话和短信功能的Android平板上会FC。解决办法是startActivity之前判断一下系统能否处理打电话或发短信的Intent:
12345private boolean isIntentAvailable(Intent intent) {PackageManager packageManager = getPackageManager();List<?> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);return list.size() > 0;}如果要在代码中设置TextView或者Button的color,而该color定义的selecter资源的话,直接使用textView.setTextColor(getResources().getColorStateList(R.color.radio_text_color))只能显示默认状态下的颜色,点击时颜色不会变,需要使用下面的方法:
1textView.setTextColor(getResources().getColorStateList((R.color.radio_text_color)));