文章出处:http://gundumw100.iteye.com/blog/1162964
卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不完时,需要通过滚动来显示视图。比如在做一个阅读器的时候,文章很长,一页显示不完,那么就需要使用卷轴视图来滚动显示下一页。
private ScrollView mScrollView; private LinearLayout mLayout; private final Handler mHandler = new Handler(); mScrollView = (ScrollView)findViewById(R.id.scroll); mLayout = (LinearLayout)findViewById(R.id.linearlayout);//linearlayout外层为 scroll mHandler.post(mScrollToBottom); private Runnable mScrollToBottom = new Runnable() { @Override public void run() { // TODO Auto-generated method stub int off = mLayout.getMeasuredHeight() - mScrollView.getHeight(); if (off > 0) { mScrollView.scrollTo(0, off); } } };
在Android,一个单独的TextView是无法滚动的,需要放在一个ScrollView中。ScrollView提供了一系列的函数,其中fullScroll用来实现home和end键的功能,也就是滚动到顶部和底部。
但是,如果在TextView的append后面马上调用fullScroll,会发现无法滚动到真正的底部,这是因为Android下很多(如果不是全部的话)函数都是基于消息的,用消息队列来保证同步,所以函数调用多数是异步操作的。当TextView调用了append会,并不等text显示出来,而是把text的添加到消息队列之后立刻返回,fullScroll被调用的时候,text可能还没有显示,自然无法滚动到正确的位置。
解决的方法其实也很简单,使用post:
final ScrollView svResult = (ScrollView) findViewById(R.id.svResult); svResult.post(new Runnable() { public void run() { svResult.fullScroll(ScrollView.FOCUS_DOWN); } });
Android将ScrollView移动到最底部
scrollTo方法可以调整view的显示位置。
在需要的地方调用以下方法即可。
scroll表示外层的view,inner表示内层的view,其余内容都在inner里。
注意,方法中开一个新线程是必要的。
否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。
public static void scrollToBottom(final View scroll, final View inner) { Handler mHandler = new Handler(); mHandler.post(new Runnable() { public void run() { if (scroll == null || inner == null) { return; } int offset = inner.getMeasuredHeight() - scroll.getHeight(); if (offset < 0) { offset = 0; } scroll.scrollTo(0, offset); } }); }
转载的 呵呵
不过看多了自己也就会了
近期在研究rom过程中发现一个非常不错的软件,可以帮助我们把APK反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。需要的朋友可以下载试用!
用法介绍(来自网络并稍加修改):
这个工具是Java写的,需要你的电脑安装了JRE或者JDK,并在系统环境变量Path里加入java.exe所在路径。
以上准备工作做好后,就可以用它来反编译APK了。这里我用动态壁纸的APK来做示范。
如果用过动态壁纸,你也许会发现在设置壁纸时,界面的显示有点问题:“动态壁纸”,在手机上中文显示为“当前壁纸”。这是“动态壁纸选择器”LiveWallpapersPicker.apk的翻译错误造成的。
(假设LiveWallpapersPicker.apk放在C盘根目录)
开始 > 运行,输入cmd,回车。
(命令行解释:apktool d 要反编译的文件 输出文件夹)
这样,LiveWallpapersPicker.apk就被反编译了,输出内容在C:\LiveWallpapersPicker文件夹里。
打开C:\LiveWallpapersPicker文件夹,我们发现里面有一些XML文件和一些文件夹。绝大部分情况下,语言和图片资源都在res文件夹里,我们这个例子当然不例外。
打开res文件夹,可以其中又是很多文件夹。(又是)绝大部分情况下,语言资源都放在values*文件夹里。比如说values放默认语言(英语居多),values-de放德语,values-fr放法语等等。一般我们关心的是values-zh-rCN(简体中文)和values-zh-rTW(繁体中文)。
打开values-zh-rCN文件夹,其中有个strings.xml。打开看看:
<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<string name=”application_name”>动态壁纸选择器</string>
<string name=”live_wallpaper_picker_title”>当前壁纸</string>
<string name=”live_wallpaper_preview_title”>当前壁纸预览</string>
<string name=”configure_wallpaper”>设置…</string>
<string name=”wallpaper_instructions”>设置壁纸</string>
<string name=”live_wallpaper_empty”>无当前壁纸。</string>
<string name=”set_live_wallpaper”>设置壁纸</string>
<string name=”wallpaper_title_and_author”>%1$s提供者:%2$s</string>
<string name=”live_wallpaper_loading”>正在载入当前壁纸…</string>
</resources>
很好,就是它了。把“当前壁纸”都改为“动态壁纸”,再检查和修正标点——中文内容用中文标点(强烈呼吁大家注意标点问题,目前马大哈太多了)后,保存。
本例改这么多就够了。其它复杂的APK建议把res文件夹里的内容都检查下,至少你关心的语言文件夹里的内容都检查下。
改完后,就可以重打包了。还是在cmd命令行里,输入:
(命令行解释:apktool b 要打包内容所在文件夹)
就可以了。生成的APK在C\:LiveWallpapersPicker\dist文件夹里,叫out.apk。
这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法自己在网上找些相关文章。
签名后得到的APK,就是可以装到手机里的了。
转自http://apps.hi.baidu.com/share/detail/32069205
手机屏幕分辨率是手机选购时参考的重要参数之一,但可能对很多人来说什么是QVGA屏幕、什么是HVGA屏幕、什么是WVGA屏幕、什么是VGA屏幕,QVGA、HGVA、WVGA、VGA之间性能有什么不同等等并不清楚。下面就为大家详细解说这些问题。
相信大家购买手机,相当看重的一个参数就是屏幕,因为几乎所有手机的绝大多数操作都需要通过屏幕,所以屏幕的大小、材质以及分辨率都是需要考虑的因素。
最近,有一款超“长”之作登场,想必大家都已经想到了,那就是LG最新推出的Black
Label系列中的一员——BL40。为什么说这款手机超“长”呢?就是因为这款手机采用了21:9的屏幕,这样的屏幕并不常见,即使他的同门兄弟
BL42也比它矮了半头。可能大家经常会听到16:9、720p、VGA、QVGA等术语,但是并不是太清楚这些术语究竟代表什么意思,也不清楚这些字母
和数据又有什么依据,所以今天EGOS就收集整理了目前市面上流行的一些关于屏幕分辨率的参数以及叫法来,并借此向大家详细解说屏幕分辨率的问题。
什么是像素?
其
实所有的画面都是由一个个的小点组成的,这一个个的小点就称之为像素。
一块方形的屏幕横向有多少个点,竖向有多少个点,相乘之后的数值就是这块屏幕的像素(数码相机的像素也是这么乘积出来的)。但是为了方便表示屏幕的大小,
通常用横向像素×竖向像素的方式来表示,例如电脑屏幕中很常见的1024×768像素,以及手机屏幕中很常见的240×320像素。
各种分辨率图解
什么是分辨率比值?
而所谓的4:3、16:9、16:10、21:9这些比值其实就是 分辨率中横向像素与竖向像素的比值 。4:3是我们最初所用的分辨率尺寸比,以前的电脑屏幕几乎都是4:3;随后宽屏显示器出现,16:10开始流行,比较常见的分辨率有1280×800像素。
明基某款24寸分辨率为16:10的显示器(1920×1200像素)
为什么HD高清电视会如此流行?
再后来随着HD电视的发展,16:9这个尺寸的分辨率也开始推广,因为HD电视的片源通常是1080p(分辨率为1920×1080像素,所谓的p就是
pixel,意思为像素)和720p(1440×720像素),因为传统的16:10的显示设配观看高清会留有黑边,而
16:9尺寸的现实设备可以实现没有黑边的播放 ,这也是这种FULL HD显示设备流行的原因。
三星某款分辨率为16:9的显示器支持FULL HD(1920×1080像素)
电影通常使用的尺寸比例
而21:9则通常是电影的尺寸比例,当然现在也有21:9的电视等显示设备,但是21:9的手机并不多,除了这次的LG BL40之外,应该只有诺基亚E90的内屏采用的是这个比例,分辨率为800×352像素。
诺基亚E90内屏也是21:9尺寸比例
飞利浦分辨率为21:9的显示器
飞利浦推出的一款分辨率为21:9的电视
讲完显示设备分辨率的基础知识之后,下面着重介绍手机屏幕的分辨率。大家经常能在EGOS产品中看到关于手机屏幕的介绍,对于QVGA、VGA、WVGA
这些字母所代表的意义可能还有些迷糊吧,看完下面的讲解您肯定就会很清楚了。
大家都能发现,现在流行的分辨率大都跟VGA沾点关系,无论是QVGA、WVGA还是HVGA等等,因为VGA就是这些尺寸的基础。VGA最早其实是IBM计算机的一种显示标准,最后逐渐的演变,成了640×480这个分辨率的代名词,也是现在绝大多数分辨率的基准。
什么是QVGA?
QVGA就是Quarter VGA的简称,意思是VGA分辨率的四分之一,这是目前最为常见的手机屏幕分辨率,竖向的就是240×320像素,横向的就是320×240像素。 目前绝大多数的手机都采用这种分辨率,例如笔者的诺基亚E66就是QVGA级别。
诺基亚E66就是QVGA级别的分辨率
什么是HVGA?
HVGA
代表的意思是Half-size VGA,意思是VGA分辨率的一半,为480×320像素,宽高比为3:2。 目前这种分辨率的屏幕大多用于PDA
,当然iPhone和第一款Google手机——T-Mobile G1也都是采用这种分辨率,黑莓也有手机采用HVGA分辨率的屏幕。
iPhone 3GS采用的就是HVGA分辨率的屏幕
HTC Dream(G1)也是采用HVGA分辨率的屏幕
什么是WVGA?
WVGA的全称想必大家很容易就能想到了,那就是 Wide
VGA,分辨率分为854×480像素和800×480像素两种。由于目前很多网页的宽度都是800像素,所以这种分辨率通常用于PDA或者高端智能手
机,方便用户浏览网页 。夏普公司的手机大多也是采用WVGA级别分辨率的屏幕。
夏普SH9020c采用WVGA级别的分辨率(854×480像素)
什么中QCIF?
其
实在QVGA分辨率流行之前,大多数手机采用的是QCIF的分辨率,QCIF为176×144像素,其实也就是Quarter
CIF的意思。而CIF是视频采集设备的标准采集分辨率,全称Common Intermediate Format的意思为常用的标准化图像格式。
于是后来大多数能拍摄QCIF格式视频的手机屏幕采用的都是176×220像素的分辨率,非常经典的摩托罗拉V3的内屏采用的分辨率就是176×220像
素。
摩托罗拉V3屏幕就是QCIF分辨率
当然,也有很多更老的分辨率支持,比如96×96、128×128,这些分辨率现在已经很难见到,大都是作为翻盖手机的外屏出现,这里就不再多做介绍了。以上介绍的都是VGA以下级别的屏幕分辨率,多用于手机屏幕,下面就再来介绍一下VGA以上级别的现实设备分辨率。
什么是SVGA?
SVGA
是Super VGA,就是我们常见的800×600像素
,而1024×768像素就不再基于VGA的标准,转为XGA成为了新一代显示设备分辨率的基准。随着显示设备行业的发展,SXGA+
(1400×1050像素)、UXGA(1600×1200像素,常用于20寸或21寸显示器)、QXGA(2048×1536像素)也逐渐浮出水面,
QXGA就已经是XGA的四倍
,也是大多数显示设备支持的极限,当然也有更高的QUXGA,但是这只是理论上的名字,现实世界中目前还没有采用这个分辨率的显示设备。
17寸的彩色显示器大都是SVGA、XGA或者SXGA+级别
4:3屏幕的发展也带动了宽屏幕的发展,最早是WVGA(800×480像素),常用语大多数的MID和小号的上网本,后来为WSVGA(1024×600分辨率),这种分辨率多用于8.9寸或10寸的上网本。
7寸的Eee PC就是采用WSVGA分辨率
什么是WXGA?
在发展到后来 WXGA(1280×800像素)逐渐在13-15寸的笔记本电脑上流行起来
;WXGA+(1440×900像素)多用于19寸宽屏;WSXGA+(1680×1050像素)则常用于20寸和22寸的宽屏,也有部分15.4寸的笔
记本使用这种分辨率;WUXGA(1920×1200像素)是目前颇为流行的分辨率之一,24-27寸的宽屏显示器大多是这种分辨率;而
WQXGA(2560×1600像素)这种分辨率主要是用在30寸的LCD屏幕,比如著名的Apple Cinema Display、Dell
UltraSharp 3007WFP/3008 WFP都采用的这种分辨率。
Dell UltraSharp 3007WFP