本文来自:安卓航班网

简介:这是[Android底层开发]Android开发问题集锦,介绍了和java,有关的知识、技巧、经验,和一些java源码等。

1.Android Market上发软件要注意哪些问题
     很多网友可能都注册了Android Market账户,但发布一款软件如果要做到很周全需要考虑哪些问题呢?
(一)、兼容性 
对于目前市面上Android设备品牌种类定位繁多,这里教程之家大致将这些分为几类:  
(1). 按操作系统区分,Android 1.5,1.6和Android 2.0,2.1或2.2等几个版本。  
(2). 按屏幕分辨率区分,目前WVGA是主流即480×800目前占了近一半,当然还有一部分HVGA的320×480大概有45%的份额,至于QVGA的一些低端机相对较少比如Moto ME511、HTC Tattoo、HTC Aria和HTC Bee这几款机型还是240×320的分辨率比较少。  
(3). 硬件或扩展库,比如需要扩展包WiFi、GPS、GSM/GPRS模块、OpenGL 3D硬件加速器的。  
面对上面的三种问题,这里eoe社区可以告诉大家一个简单的方法来处理比如说直接在androidmanifest.xml中设置,这样Google的Android Market就可以自适应了。面对以上问题,解决方法分别为  
(1). 重新配置use-sdk节点,比如仅仅让android 2.0到2.1之间的用户使用而2.2的用户无法使用,可以设置为 其中中间数字代表API Level,而maxSdkVersion属性在较早的SDK中不支持,可能ADT无法编译通过。  
(2). 分辨率我们可以添加supports-screens节点,比如兼容hvga和wvga的,可以这样写 这里small代表qvga,normal就是hvga,而large是wvga或fwvga,最后的密度还牵扯到LCD屏幕问题  
(3). 扩展库,比如我们用到google maps包,或中移动的oms库,可能需要 的字样,当然硬件的问题还可以引入特性节点 比如 < android:glEsVersion=”0×00020000″>   
android:name=”android.hardware.camera” android:required=”true”/> 这里就是我们的游戏需要OpenGL ES 2.0的版本,如果需要2.1则值为0×00020001,需要更高的固件才能支持,同时还必须要系统的摄像头硬件。  
详细的教程之家在这里给大家列出来:
android.hardware.camera.autofocus
android.hardware.camera.flash
android.hardware.sensor.light //光线感应器
android.software.live_wallpaper //动态壁纸
android.hardware.sensor.proximity 距离感应器
android.hardware.touchscreen.multitouch //多点触控
android.hardware.telephony
android.hardware.telephony.cdma
android.hardware.telephony.gsm
(二)、软件的隐私问题
尽量不要声明过多危险的permission,比如需要访问用户信息,联系人、短信、通话记录、定位信息等等,对于一般的程序调试反馈,Google已经在Android 2.2的固件中加入了自动反馈和自己程序的logcat stack print功能,可以在Android Market的console后台查看。

2.MATCH_PARENT是什么类型的布局
    有网友表示对于很多工程中的MATCH_PARENT出现在layout中感到不明白,过去只有FILL_PARENT和WRAP_CONTENT那么 match_parent到底是什么类型呢? 其实从Android 2.2开始FILL_PARENT改名为MATCH_PARENT ,从APILevel为8开始我们可以直接用MATCH_PARENT来代替FILL_PARENT,最后教程之家提醒大家,他们的定义本质是一样均为 -1,只是换了个别名,可能为了更准确些,比如最终在SDK中的定义为:
fill_parent   -1  The
view should be as big as its parent (minus padding). This constant is
deprecated starting from API Level 8 and is replaced by match_parent.
match_parent   -1 The view should be as big as its parent (minus padding). Introduced in API Level 8.
wrap_content   -2  The view should be only big enough to enclose its content (plus padding).

3.Android换行符变成方框的解决方法
    我们都知道Android是基于Linux内核的,在处理换行符时使用的是\n而Windows服务器处理换行符为\r\n这样的方式,对于显示\r 即回车符在Android上面可能就变成了黑色的方框或者说方块,我们在Android的TextView或EditView等文本显示控件上将\r\n 替换成\n即可。

4.View的显示状态GONE,VISIBLE和INVISIBLE区别
    很多网友可能会发现View类的设置显示状态setVisibility方法有三种情况,分别为GONE、VISIBLE和INVISIBLE,它们之间到底有哪些区别呢? 教程之家给大家举个简单的例子。可能很多网友会发现有些Android应用的下面包含了AdMob或Adsense广告条,如果这个View 我们设置为GONE则消失,该广告条看不见也不占用位置。而INVISIBLE则代表广告条那块是空白,但仍然沾着他布局高和宽的位置,而VISIBLE 就是标准显示时的状态。

5.android单实例运行方法
    我们都知道Android平台没有任务管理器,而内部App维护者一个Activity historystack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是startActivity可能会使用FLAG_ACTIVITY_NEW_TASK标记来打开一个新窗口,比如Launcher,所以考虑单任务的实现方法比较简单,首先教程之家纠正下大家一种错误的方法就是直接在androidmanifest.xml的application节点中加入android:launchMode=”singleInstance”这句,其实这样将不会起到任何作用,Apps内部维护的历史栈作用于Activity,我们必须在activity节点中加入 android:launchMode=”singleInstance” 这句才能保证单实例,当然一般均加在主程序启动窗口的Activity。

6.Droid2无法识别ADB问题解决方法

    目前来说Motorola Droid2手机无法识别ADB,虽然通过Moto自带的驱动安装可以在Windows XP/7上安装设备驱动,但在Eclipse中可以看到DDMS的Device Manager无法识别,这问题问题以往也出现过,主要原因是你当前的ADT插件版本太低,一般Google每次推出一个高版本的固件,比如 Android 2.2则对于ADT插件也将会升级使其一些特性将支持。

7.ListView和ScrollView同时使用Bug
    很多网友可能发现ListView或ScrollView这样的组件放在一起套嵌会出现无法正常显示的bug,比如典型的例子就是ScrollView 中包含的ListView只能显示2行左右,而ListView中的数据肯定远大于2个,这样的问题教程之家推荐大家可以通过重写ListView的onMeasure方法来重新设置控件的显示高度,在onMeasure中我们使用setMeasuredDimension方法重新设置控件的显示尺寸。同样对于部分网友提到的水平滚动ListView仍然适用,当然可能还有一部分网友可能使用HorizontalScrollView来实现。

8.px像素如何转为dip设备独立像素
    最近有网友问如何将px像素转为dip独立设备像素,由于Android的设备分辨率众多,目前主流的为wvga,而很多老的设备为hvga甚至低端的qvga,对于兼容性来说使用dip无非是比较方便的,由于他和分辨率无关和屏幕的密度大小有关,所以推荐使用,不过这里教程之家提示大家,ophoneos的手机对于dip的支持糟糕透了,显示的结果会放大很多,同时黑色的主题会导致常规的黑色文字让用户无法分辨。   px= (int) (dip*density+0.5f) //这里eoe社区提示大家很多网友获取density的方法存在问题,从资源中获取的是静态定义的,一般为1.0对于HVGA是正好的,而对于wvga 这样的应该从WindowsManager中获取,WVGA为1.5

9.Android的Btimap处理大图片解决方法
    我们都知道Android的Dalvik VM为一个应用提供了大约16MB的内存,一般我们处理超过8MB的图片将会出现OutOfMemoryError异常,我们解码一个图片为了防止内存不足的异常我们可以使用BitmapFactory.Options 的udeinTempStorage属性解决,代码如下:BitmapFactory.Options cwj = new BitmapFactory.Options();cwj.inTempStorage = new byte[1024*1024*5]; //5MB的临时存储空间Bitmap bm = BitmapFactory.decodeFile(inputStream,cwj); //这里cwj为Options属性

10.android下解析xml文件遇到中文问题
    很多Android开发者可能一直抱怨xml解析库不够完善,对于国内很多server并不是标准的utf-8编码,遇到中文时可能解析器会停止或解析出来的是乱码。这里教程之家给大家说下常见的解决方法:
(一)、android sax库遇到gbk或gb2312编码时

方法1. 可以显示的指明编码比如:
InputSource is = new InputSource(inputStream);   
is.setEncoding(“UTF-8″);   
方法2. 使用InputStreamReader转换   
在SDK中可以查看有这样实例化方法,参数二为字符集 InputStreamReader(InputStream in,Charset charset) 具体使用可以是 InputSource is=new InputSource(new InputStreamReader(inputStream,”gb2312″));   
有关InputSource的细节,我们遵循如果有字符流可用,则解析器将直接读取该流,而忽略该流中找到的任何文本编码声明。如果没有字符流,但却有字节流,则解析器将使用该字节流,从而使 用在InputSource 中指定的编码,或者另外(如果未指定编码)通过使用某种诸如 XML 规范 中的算法算法自动探测字符编码。如果既没有字符流,又没有字节流可用,则解析器将尝试打开到由系统标识符标识的资源的 URI 连接 。

原文地址:http://www.apkway.com/forum.php?mod=viewthread&tid=1433&page=1&extra=#pid1913

转载于:https://www.cnblogs.com/yyq-quan/archive/2011/07/11/2103382.html

Android开发问题集锦相关推荐

  1. Android开发问题集锦(六)--获取北斗卫星定位信息

    Android开发问题集锦六--获取北斗卫星定位信息 程序之美 程序之美 获取北斗卫星定位信息需要硬件的支持,市面上的手机设备有支持北斗定位的,有不支持的,但北斗定位在很多特定的业务需求中是很重要的, ...

  2. Android开发问题集锦十四--绚丽的烟花

    Android开发问题集锦十四--绚丽的烟花 程序之美 前言 源码下载 程序之美 前言 随着一声突如其来的响声,打破了久违的不能喘息般的的寂静.一团彩色的光芒快速上升着,留下一线灰色的烟雾.啪!一朵& ...

  3. 【Android 应用开发】Android 开发错误集锦

    1. eclipse的Device中不显示手机 在eclipse中连接不上手机,出现adb server didn't ACK  fail to start daemon 错误. 出现这种原因是因为a ...

  4. android开发出现的错误,android 开发 错误集锦

    1,Android Studio run出APP图标红叉解决办法: Tools -> Android -> Sync Project with Gradle Files (Android ...

  5. Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题

    1.下面是不生效的布局: selector_btn_red.xml: <?xml version="1.0" encoding="utf-8"?> ...

  6. Android开发推荐资料大合集 【转载自51CTO】

    Android开发资料大集合 Android开发问题集锦1~6集合 http://down.51cto.com/data/440230 Android画图学习 http://down.51cto.co ...

  7. [Android问答] 开发环境问题集锦

    [Android问答] 开发环境问题集锦 工欲善其事,必先利其器. 和iOS开发相比,Android的开发环境的版本比较多,随之而来的问题也多.显然,我们不应该浪费宝贵的时间在解决开发环境带来的问题上 ...

  8. 安卓开发实战讲解!史上最全的Android面试题集锦,深度好文

    " 对于程序员来说,如果哪一天开始他停止了学习,那么他的职业生涯便开始宣告消亡." 高薪的IT行业是众多年轻人的职业梦想,然而,一旦身入其中却发觉没有想像中那么美好.被称为IT蓝领 ...

  9. Android开发工具类集锦

    概述 本人做android开发已有段日子了,在开发的过程中一直使用着工具类,包括别人已经封装好的工具类以及自己封装的工具类,本篇博客向大家介绍自己在开发过程中经常使用到的一些简单实用的工具类,在文章末 ...

最新文章

  1. 憋不住的心里的一个想法,JVM的BYTECODE是完全平台无关的么?
  2. pyqt5教程13:客户定制组件
  3. 光流 | 高精度变分光流、LK-HS多项式展开的帧间估计、局部全局光流(论文翻译)及光流场与光流算法研究
  4. git的入门摸索和入门研究
  5. Linux x8664汇编,Linux Udis86 反汇编引擎使用
  6. ASP.NET 页生命周期
  7. hadoop之MapReduce的案例(多表关联)
  8. WebApp前端页面性能优化建议
  9. 2017河北对口计算机试题,2017河北省对口升学计算机专业理论试题(附答案解析).doc...
  10. Matlab imshow, image, imagesc 三者详细分析
  11. 如何在IOS上玩gba游戏(免越狱)
  12. python xlsxwriter下载_python_xlsxwriter模块
  13. RxBus的使用及解析
  14. big code: Toward Deep Learning Software Repositories [MSR 2015]
  15. [dlang](二)用vibe.d+thrift做网络编程
  16. 54、记录yolov7 训练、部署ncnn、部署mnn、部署rk3399 npu、部署openvino、部署oak vpu、部署TensorRT
  17. Q版京剧脸谱来喽——黑脸
  18. LeetCode P104--二叉树的最大深度
  19. 已知IP地址和子网掩码后可以算出网络地址、广播地址、地址范围、主机位数、可用主机位数
  20. Unity3D 安装

热门文章

  1. Spring+SpringMvc+Hibernate 框架搭建
  2. 对PostgreSQL缺省表空间的理解
  3. Android上的MVP:如何组织显示层的内容
  4. linux服务器上nginx日志访问量统计命令
  5. RedHat6.5-Linux安装telnet服务
  6. 食物日记:上海铁板烧
  7. 拆数,给定两个正整数m,n(m = n),将m拆成n个数相加...(游戏)
  8. centos 升级cmake from 2.* to 3.*
  9. html 中表单元素input type=hidden的作用
  10. vscode个人配置