黑马程序员技术交流社区

标题: 安卓开发问题第三篇 [打印本页]

作者: hdchenyue    时间: 2014-7-30 16:24
标题: 安卓开发问题第三篇
16、屏幕方向变化时(横屏->竖屏,或反过来),ListView里发生变化的内容丢失,状态回到开始时的样子。
当屏幕方向发生变化时,android会重建整个Activity以便你构造更适合某个方向的UI。为了避免这种情况,在AndroidManifest.xml里的那个Activity声明上增加android:configChanges="orientation" 即可。详见参考链接
17、各手机平台仿真器/模拟器的下载链接
18、AlertDialog#show()方法是不会阻塞当前线程的。
19、让不同Activity之间进行通信,例如一个TabActivity里有多个Activity,它们之间需要传递一些消息。
可使用BroadcastReceiver机制。 参考链接。要注意的是,tab还未启动时是无法接收到消息的,所以要在tabhost所在的activity里也接收消息,当tab启动时传给它。
20、Android SDK里的style和theme文档
见此链接
21、Tab的样式。
Android的tab样式问题比较多,不同版本的样式也不一样。这里有一个自定义样式的参考链接
22、在ListView里使用单选/复选按钮。
问题很多,这个链接看起来解决了问题,但在我的环境里没试验成功。
Update: 以复选按钮为例,本质的问题在于ListView里的复选按钮不知道对应的model是哪个,需要事先用CheckBox#setTag(myModelObject)关联,onclick事件里用getTag()改变其选中状态。建议看这篇文档
23、strings.xml里定义的字符串里增加参数。
在字符串里用“%1$s”、“%2$d”表示参数的序号和类型,然后用String.format()方法赋值。参考这个链接
24、嵌入条码/二维码扫描功能
使用zxing。方法是在手机上先安装BarcodeScanner.apk,然后在程序里调用其提供的Activity,该Activity会返回扫描结果。 参考链接
25、改变ListView里每个Row的背景颜色
直接在getView()里写view.setBackgroundColor()是不行的。正确的方法是先在drawable目录里建一个xml文件,自己起名如my_row.xml,内容如下(关键是第一个和第四个<item>):
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_window_focused="false" android:state_selected="true"        android:drawable="@android:color/transparent" />    <item android:state_selected="true" android:drawable="@android:color/transparent" />    <item android:state_pressed="true" android:state_selected="false"        android:drawable="@android:color/transparent" />    <item android:state_selected="false" android:drawable="@color/solid_red" /></selector>
然后在getView()里这样写就可以了:
if (item.getStopId().equals(User.stopId)) {    view.setBackgroundResource(R.drawable.my_row);} else {    view.setBackgroundResource(android.R.drawable.list_selector_background);}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2