javaee论坛

普通会员

225648

帖子

342

回复

356

积分

楼主
发表于 2019-11-08 18:55:35 | 查看: 96 | 回复: 1

Q:AndroidMarket上发软件要注意哪些问题?

A:很多网友可能都注册了AndroidMarket账户,但发布一款软件如果要做到很周全需要考虑哪些问题呢?(一)、兼容性对于目前市面上Android设备品牌种类定位繁多,这里大致将这些分为几类:(1).按操作系统区分,Android1.5,1.6和Android2.0,2.1或2.2等几个版本。(2).按屏幕分辨率区分,目前WVGA是主流即480x800目前占了近一半,当然还有一部分HVGA的320x480大概有45%的份额,至于QVGA的一些低端机相对较少比如MotoME511、HTCTattoo、HTCAria和HTCBee这几款机型还是240x320的分辨率比较少。(3).硬件或扩展库,比如需要扩展包WiFi、GPS、GSM/GPRS模块、OpenGL3D硬件加速器的。面对上面的三种问题,这里eoe社区可以告诉大家一个简单的方法来处理比如说直接在androidmanifest.xml中设置,这样Google的AndroidMarket就可以自适应了。面对以上问题,解决方法分别为:(1).重新配置use-sdk节点,比如仅仅让android2.0到2.1之间的用户使用而2.2的用户无法使用,可以设置为其中中间数字代表APILevel,而maxSdkVersion属性在较早的SDK中不支持,可能ADT无法编译通过。(2).分辨率我们可以添加supports-screens节点,比如兼容hvga和wvga的,可以这样写这里small代表qvga,normal就是hvga,而large是wvga或fwvga,最后的密度还牵扯到LCD屏幕问题。(3).扩展库,比如我们用到googlemaps包,或中移动的oms库,可能需要的字样,当然硬件的问题还可以引入特性节点比如<android:glEsVersion=“0x00020000”><android:name=“android.hardware.camera”android:required=“true”/>这里就是我们的游戏需要OpenGLES2.0的版本,如果需要2.1则值为0x00020001,需要更高的固件才能支持,同时还必须要系统的摄像头硬件。详细的在这里给大家列出来:

1.android.hardware.camera.autofocus2.android.hardware.camera.flash3.android.hardware.sensor.light//光线感应器4.android.software.live_wallpaper//动态壁纸5.android.hardware.sensor.proximity距离感应器6.android.hardware.touchscreen.multitouch//多点触控7.android.hardware.telephony8.android.hardware.telephony.cdma9.android.hardware.telephony.gsm

(二)、软件的隐私问题

尽量不要声明过多危险的permission,比如需要访问用户信息,联系人、短信、通话记录、定位信息等等,对于一般的程序调试反馈,Google已经在Android2.2的固件中加入了自动反馈和自己程序的logcatstackprint功能,可以在AndroidMarket的console后台查看。

Q:MATCH_PARENT是什么类型的布局?

A:有网友表示对于很多工程中的MATCH_PARENT出现在layout中感到不明白,过去只有FILL_PARENT和WRAP_CONTENT那么match_parent到底是什么类型呢?其实从Android2.2开始FILL_PARENT改名为MATCH_PARENT,从APILevel为8开始我们可以直接用MATCH_PARENT来代替FILL_PARENT,最后提醒大家,他们的定义本质是一样均为-1,只是换了个别名,可能为了更准确些,比如最终在SDK中的定义为:

1.fill_parent-1Theviewshouldbeasbigasitsparent(minuspadding).ThisconstantisdeprecatedstartingfromAPILevel8andisreplacedbymatch_parent.2.match_parent-1Theviewshouldbeasbigasitsparent(minuspadding).IntroducedinAPILevel8.3.wrap_content-2Theviewshouldbeonlybigenoughtoencloseitscontent(pluspadding).

Q:Android换行符变成方框的解决方法

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

Q:View的显示状态GONE,VISIBLE和INVISIBLE区别

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

Q:android单实例运行方法

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

Q:Droid2无法识别ADB问题解决方法

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

Q:ListView和ScrollView同时使用Bug

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

Q:px像素如何转为dip设备独立像素

A:最近有网友问如何将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。

Q:Android的Bitmap处理大图片解决方法

A:我们都知道Android的DalvikVM为一个应用提供了大约16MB的内存,一般我们处理超过8MB的图片将会出现OutOfMemoryError异常,我们解码一个图片为了防止内存不足的异常我们可以使用BitmapFactory.Options的udeinTempStorage属性解决,代码如下:

1.BitmapFactory.Optionscwj=newBitmapFactory.Options();2.cwj.inTempStorage=newbyte[1024*1024*5];//5MB的临时存储空间3.Bitmapbm=BitmapFactory.decodeFile(inputStream,cwj);//这里cwj为Options属性

Q:android下解析xml文件遇到中文问题

A:很多Android开发者可能一直抱怨xml解析库不够完善,对于国内很多server并不是标准的utf-8编码,遇到中文时可能解析器会停止或解析出来的是乱码。这里给大家说下常见的解决方法:(一)、androidsax库遇到gbk或gb2312编码时方法1.可以显示的指明编码比如:

(1)InputSourceis=newInputSource(inputStream);(2)is.setEncoding("UTF-8");

方法2.使用InputStreamReader转换在SDK中可以查看有这样实例化方法,参数二为字符集InputStreamReader(InputStreamin,Charsetcharset)具体使用可以是InputSourceis=newInputSource(newInputStreamReader(inputStream,“gb2312”));有关InputSource的细节,我们遵循如果有字符流可用,则解析器将直接读取该流,而忽略该流中找到的任何文本编码声明。如果没有字符流,但却有字节流,则解析器将使用该字节流,从而使用在InputSource中指定的编码,或者另外(如果未指定编码)通过使用某种诸如XML规范中的算法算法自动。


普通会员

0

帖子

295

回复

302

积分
沙发
发表于 2024-04-20 06:23:06

围观

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017