安卓、常见错误、规整

1、当当前方法里面要跳出去写另外一个方法的时候,如果另外那个方法里面如果需要大环境,那么必须把另外那个方法放在当前方法外面,去获取大环境。

2、注意,在进行下载操作时,如果是下载到SD卡中,别忘了加权限。

3、注意,用隐式意图跳转时、如果是要加category属性,那么方法不是set~,而是add~

4、注意,一般listview和gridview的适配器不要抽取到一个类中单独书写,不然可能出现开启不了活动的情况,原因是,加载条目的事情,必须在系统开启活动之前完成,单独写一个类的时候,运用打气筒时,需要传一个上下文,因为此时,活动还没有开启,所以不能用this,直接new也会报错,new其他活动的实例可能能成功但是造成了不必要的麻烦。

5、注意,在使用自定义控件,填充view的时候,注意不要使用重载方法addView(),而是直接用this.addView(),直接添加,要不然会出错。

6、注意,如果要使自定义控件有点击事件,不仅仅要重写一个isClickable()方法,并返回true,而且在只用XML(布局文件)中使用自定义控件的时候还要设置android:clickable="true",要不然不具备点击事件,也就导致了添加了选择器却点击后不变样子的情况。

7、注意,在设置自定义控件的自定义属性的时候(attrs.xml),属性的返回值类型一定要写成小写,要不然系统不识别,例如"String"一定要写成"string"。

8、用弹窗对象Buelder对象的create()方法可以得到一个Dialog对象用来执行dismiss(),以达到关闭窗体的作用,但是,每次执行create(),都是重新NEW了一个AlertDialog对象,所以,如果在局部使用的时候,最好在大环境中定义出来(全局),这样就不会出错了。

9、当为一个布局设置背景的时候,不要单独使用ImageView控件来设置src,而是直接在那个布局的属性中添加background,要不然可能出现背景左右没有填满屏幕的情况。

10、抽取样式也有一定的格式,

<style name="【样式名称】"><item name="【属性】">【属性值】></item></style>

11、在状态选择器中,使用图片时,如果需要一张纯色的图片,不可以直接设置颜色值,这个时候可以用到color.xml这种东西,在res -> values -> colors.xml 中定义,作用就是将一个纯色转换成一个纯色的图片资源。

12、在广播接收者中,如果OnReceive里面的方法执行的时间超过10秒的话,就会不继续执行,如果必须要执行耗时操作的话,一般放在服务里面进行执行。

13、通过RadioGroup的getCheckedRadioButtonId()方法得到的返回值(int)是RadioButton的id值。

14、设置当listview没有数据显示的时候,应该显示什么样的view对象mListView.setEmptyView(mEmpty);

15、在进行电话拦截的时候,用的是不是广播接收者,而是,电话的管理者

16、在ListView中如果需要分割线,那么就是用divider属性,就可以设置,可以用一张图片在做,也可以用一个颜色来做。但是需要注意的是,当设置的是颜色的时候,必须设置颜色的高度(通过dividerHeight这个属性来设置,单位为dp),因为颜色是没有高度的,用图片充当的时候就不用设置高度,以为图片本身就有一个高度。

17、可以通过一个控件的getWindow()方法得到自己所在的窗口的对象,通过这个对象可以得到自己在这个窗口中的属性对象(getAttribute()),得到了属性的对象(params)后,就可以通过属性的对象设置一些新的属性给自己,然后最后要注意的是,设置完成以后必须要再将这个属性对象设置给我们的窗口对象(setAttribute(params))。

18、在自定义一个Dialog(弹窗)的时候,我们可以自定义它的样式,自定义它的视图,我们继承Dialog类以后,里面有一个非常特殊的方法,onCreate()重载方法,里面有一个setContentview的方法,这里这个方法和Activity里面的那个。。。。。非常相似了,就是为自己加载一个布局样式,这样我们就在我们的弹窗中自定义出自己想要的风格,需要注意的是当我们使用自定义的Dialog主题样式的时候,我们在两个参数的构造函数里面设置主题,当设置了自己所需要的主题时,如果不引用系统自带的主题的话,会导致我们的自定义Dialog全屏,这并不是我们想看到的,所以这里我们必须通过在自定义的属性的标签里面用parent这个关键字(parent:"[系统的主题]"),来引用我们系统的Dialog主题,相当于我们只是覆盖了部分的主题。,而一些关键的主题风格还是用的系统的样式。

19、在安卓中有两个定义样式的文件一个是style文件,一个是theme文件,他们有什么区别呢?style文件主要是用来设置控件的样式的,而theme主要是用来设置空间的主题的。大体方向上是属于一类东西,但是在细节上还是有区别的。

20、当我们 拷贝了一些系统的主题样式来使用的时候,一些属性的开头没有加命名控件(Android:),如果我们不加的话,可能会报错,所以拷贝系统的风格样式来用的时候,我们一般都要在没有加命名空间的位置加上(Android:)。

21、当listView中有固定的条目类型时,不需要复用,那么就需要将服用的代码提取到需要服用的条目加载的里面,要不然会出现空指针异常。

22、怎么在谷歌提供的API demos里面找到我们想要的动画效果并抄袭复用?先看你需要的那个效果的界面上有什么关键字,然后可以在.XML文件中搜索那个关键字找到string.xml文件,然后看哪个布局文件里面引用了这个关键字,就好到了界面的布局,找到布局以后,就在.JAVA文件中搜索,看哪个文件加载了这个布局,然后分析,那个效果是哪个控件触发的,就去找那个控件的监听事件,然后代码改一改,缺插补器的话找一找,然后你懂得!

23、在ListView中如果存在CheckBox的话,如果用盒子(Holder),对View进行复用的话,其选中状态也会跟着复用,解决的办法就是,让它不可点击,不可存在焦点,把每个条目是否选中的信息存在BEAN中,然后调用NotifydataSetChange方法(调用这个方法会回调适配器中的GetCount和GetView这两个方法),然后在适配器中用代码手动的设置相应的条目是否选中。

24、当一个控件遮挡了另外的View的时候,如果后面的View有点击事件,那么,我们点击我们上方控件

的时候,就会影响到 下面的View的点击事件,所以,一般我们都要屏蔽了下方View的点击事件,做法就

是在我们的上方控件里面设置Clickable属性为真。

25、远程布局无法findViewById(),用里面提供的方法来设置里面的控件属性。

26、不仅仅字符串可以进行国际化,图片也可以进行国际化。

27、当一个模块需要另外一个模块提供数据的时候,为了降低耦合我们采取回调的方式进行数据传递。

在需要数据的模块内实现一个接口并实现方法,然后把接口对象传递给提供数据的模块,提供数据的模

块只需要将数据放在接口的方法参数中,就相当于调用了实现方法,实现了相应的需求。

28、异步加载不能取消,只能设置标示(cancle(true)),在各个方法中获取标示来判断然后屏蔽以

前执行的代码,来让异步不执行代码了,只是一个伪取消操作。

29、安卓中,不允许单个的应用程序清理其他程序的缓存,一键清理其实是使用了安卓的一个BUG来实现

的。用包管理者里面的freestorageAndnotify方法来清除数据,利用的是安卓中如果请求的空间大小大

于总大小的话,就会清空已用空间,这个方法需要利用反射来做,并且需要加上清除APP缓存的权限。

30、所有的aidl操作都是在子线程中进行的,因为aidl操作一般都是耗时操作。

31、包管理者,可以通过一个包名,得到打开这个应用程序的意图对象。

32、在安卓打包混淆的时候,自定义控件混淆不了,四大组件也混淆不了。因为安卓系统在找的时候,混淆了就找不到。

33、与ROOT相关的一个可执行文件在system目录下的xbin文件夹里面,叫做su。只要放在这个指定目录获取了ROOT权限,但是需要注意的是,现在很多的定制系统有的屏蔽或者改变了这个可执行文件的位置。这样就可以去通过执行这个文件,判断手机是否ROOT了,执行失败说明没有ROOT。

34、ListView的条目中如果有可以执行点击事件的控件的话,会抢夺条目的点击事件,如果需要分开处理点击事件,必须设置一下,条目的容器属性(后裔事件),descendantfocusability属性,选择不同的处理方式。

35、ListView默认的上下边缘有一个衰弱的颜色效果,如果要取消的话,可以设置其fadingedgelength属性,英文翻译(衰弱边缘长度)。与这个属性类似的还有一个条目之间的分割线的长度dividelength属性(设置分割线的高度)。

36、自定义控件时,如果是在主线程中用invalidate,在子线程中用postinvalidata,这两个方法可以回调onDraw方法或者ComputeScroll方法,区别在于,如果继承的是View就调用前者,如果是继承的是ViewGroup就调用后者。

37、在使用ViewPager(V4包)时,继承适配器时,要手动添加两个必要的实现方法,注意!是手动添加,我至今不明白为什么这样的必须实现的两个方法,为什么不定义为抽象方法,这是我对谷歌工程师很不解的一点,不过记住就好,一个是instantiateItem,一个是destroyItem方法。并且在instantiateItem中,得到一个子View的引用后并不能像ListView的适配器一样直接返回,而是要手动的用addView方法添加,并且,这里这个方法的返回值变成了缓存View的对象(在ViewPager里最多有三缓存对象,左右最多各一个,当滑动时,如果左右超出了相邻位置后,会从缓存中删掉那个条目)。

38、ListView的条目中存在可以点击的控件时,会抢夺条目本身的点击事件,如果不希望这样,需要在条目的布局的根布局中添加adescendantFocusability属性,属性值设置为blockDescendants,这个属性的名字叫做后裔事件处理,其实就是设置怎么处理孩子与自己冲突的事件。

39、当一个控件还没有完全布局到界面上时,不能调用getWidth这样的方法得到控件的宽高,因为这个方法只有当活动的onCreate方法执行完以后,才有值,在还没有使用某个布局或者控件的时候,如果想的到其宽高,只能通过测量后,得到一个测量的宽度。

40、在设置一个View隐藏时,一种是View.GONE,一种是View.INVISIBLE,两种方法都可以隐藏,但是又有小小的区别,前者隐藏后,连布局本身都没有了,可能会影响到父布局,比如父布局的高设置为包裹内容,那么就撑不起来了!后者隐藏后布局本身还在,还能为父布局撑起来。

41、在继承ViewGroup来做自定义控件时,为子孩子设置布局时,设置的是子孩子的左上角,右下角的坐标。这一点和其他地方有一些区别,需要特殊记忆。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,333评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,340评论 0 17
  • 看到这个题目,就好像上小学时老师的命题作文。那个时候的梦想大都是家长和老师灌输的理念,社会上什么行业吃香就选择什...
    善纯阅读 209评论 0 0
  • 时间飞快,转眼就到了而立之年。小时候和周围的思想心灵都差不多,都是那么的单纯,而长大后各个人的性格,三观差别就比较...
    井中月他爹阅读 1,332评论 1 0
  • 所以,还是不知想要什么. 破碎的镜片,印出伤痕容颜. 我,直视无数双眼. 却还是没能找出哪一双,是自己. 逐渐模糊...
    风吹过的林阅读 176评论 0 0