安卓双击唤醒屏幕手机屏幕右上侧出现动态内容

为什么说安卓手机屏幕的发展已经到达极限?
任何事物的发展都有一个极限,安卓手机屏幕的发展似乎也已经接近了它的极限;在这种情况下,与其盲目地追求更高的突破,不如冷静下来想想如何在屏幕分辨率的维度之外寻求一个更为有效的突破点和平衡点。
现在的智能手机屏幕已经进入2K时代,无论是国际大牌三星的年度旗舰S6,还是国产手机旗舰中的佼佼者小米Note顶配版,都已经用上了分辨率的超高清屏幕。不过最近又传出消息,未来一段时间将要发布的中兴星星3号和三星Note 5都可能配备逆天的4K屏幕。看来众多手机厂商在硬件配置的追求上依旧是蛮拼如故。
众多周知,以iPhone为引领的新型智能手机时代到来才不过8年,其中国产安卓智能手机发力才不过5年左右的时间,而智能手机屏幕的发展却如此迅疾,已经赶上乃至超过了有二十多年发展进程的笔记本电脑。手机屏幕的发展何以如此飞速?安卓智能手机屏幕的发展是否到达极限?我们来探讨一下。
惊艳世界的视网膜屏幕
在IPhone 4发布之前的2010年上半年,手机行业还远远没有形成今日的格局。诺基亚的塞班系列虽然已经现出颓势,但在2010年第一季度的销量中依然占据了全世界移动终端35%的市场份额。苹果手机已经发展到第三代的iPhone 3GS,虽然大受欢迎,但其市场份额也不过是2.7%,而安卓手机当时的销量甚至还不如iPhone。
再看看当时手机市场普遍的屏幕配置,诺基亚已经推出的可触摸的塞班S6v5操作系统被普遍采用,当时销售最为火爆的X6,5320,N97mini以及5800 XM等机型采用的都是像素数为640&360的3.2英寸触摸屏幕,屏幕的PPi(Pixels per inch的简称,表示每英寸长度能排列的像素数目,其数值越高,表示显示效果越好)数达到了223;这样的屏幕在当时已经是顶级的配置,画面显示效果也已经非常细腻了。而当时的最新款苹果手机iPhone 3GS采用的是480&320的3.5英寸触摸屏,PPi才不过是165左右,还不如当时的诺基亚。
坦白地说,在当书目时的整个手机行业里,诺基亚的屏幕水准已经是业内最高水平了,223 PPI的像素密度已经可以使手机屏幕的显示非常细腻出色了;然而,谁也没有料到对产品之美的追求如此严苛的乔布斯竟然石破天惊地在下一代手机产品iPhone 4上祭出了惊艳世界的视网膜屏幕。
所谓的视网膜屏幕是乔布斯在iPhone 4发布会上提出的一个概念。用乔布斯的原话说:&当你所拿的东西距离你10-12英寸(约25-30厘米)时,它的分辨率只要达到300ppi这个&神奇数字&以上,你的视网膜就无法分辨出像素点了。&也就是说,如果如果手机屏幕的分辨率超过300PPI,人眼就无法在屏幕上识别出像素点,从而在感觉上达到极为清晰、锐利、细腻的屏幕识别效果。正是为了达到这个效果,iPhone 4配备了一块960&640分辨率的3.5英寸屏幕,像素密度达到了329ppi。
iPhone 4甫一亮相,就惊艳了全世界;尤其是它那所谓的视网膜屏幕,让当时包括诺基亚在内的整个手机圈的屏幕显得黯淡无光。从此,整个智能手机行业开始在屏幕上倾注心力,急速提升;因此可以说,在整个智能手机屏幕发展的进程中,iPhone 4是一个不得不提的里程碑式的作品。
安卓阵营的屏幕竞赛
这两年应该是整个手机行业最为激烈震荡的两年。在这两年里,手机行业的老大诺基亚在操作系统的固步自封和老态龙钟中逐渐倒塌,而新生的安卓却由于其开放性受到众多厂商的追捧却急速成长。据Canalys在2011年2月公布的数据显示,当时安卓的份额已经超过48%,成为全球第一大智能手机操作系统。
然而相对于iPhone在软硬件结合上的一枝独秀,众多安卓厂商却面临着操作系统同质化的问题,所以为了体现自己产品的优势,就不得不在硬件的配置上下功夫;尤其是体现在手机的屏幕上,众多厂商的手机不仅早已突破iPhone 4的3.5英寸达到4英寸以上,而且在5.3英寸的三星Galaxy Note于2011年9月发布之后,众厂商也纷纷向5英寸的屏幕跟进。
当然,由于iPhone 4在横空出世之后受到了空前的欢迎,而且它高达329PPI的视网膜屏幕所产生惊艳效果,安卓厂商在为手机配置大尺寸屏幕的同时在屏幕的分辨率上也毫不含糊。2010年下半年到2011年上半年,800&480,960&540分辨率的4.X尺寸的触摸屏开始在安卓手机中普及开来,PPI值普遍在200到300之间,还是没能比得上iPhone 4。
然而从2011年下半年开始,安卓阵营在手机屏幕上的配置开始急速飙升,安卓各家也开始了一场惊心动魄的屏幕大赛。
日,LG凭借其在触摸屏上的生产和研发优势, 发布了全球首款搭配分辨率(后文简称720P)屏幕的 LG Optimus LTE,屏幕尺寸为4.5英寸,像素密度为326,终于达到了所谓的视网膜屏水准。同月发布的三星Galaxy Note也搭载了一块P的同水准屏幕。此后到2012年前三季度有不少旗舰机型如三星Galaxy S3,HTC one X,华为D1等也纷纷搭载了P的4.5英寸上下不等的屏幕,像素密度也纷纷超过300PPi;连2012年8月发布的小米也不例外。
正当720P屏幕慢慢普及、大家都沉浸在高清屏幕的兴奋中的时候,分辨率(后文简称1080P)全高清屏幕却开始登场了。2012年12月,HTC发布了全球首款搭载分辨率为P 的5英寸大屏智能手机HTC Butterfly,其像素密度达到了惊人的441PPI;这远远超出了视网膜屏幕300PPI的标准。于是,安卓阵营在接下来的2013年内又开始新一轮的屏幕跟进大潮,三星S4、HTC M7、小米3等机型都无一例外地选择了1080P。
手机屏幕分辨全面进入1080P,其像素密度也已经普遍达到了400PPI以上了;这个数值对于人的眼睛来说,已经足以满足甚至大大超过人们对于手机屏幕在清晰度、细腻程度的需求了。而且由于高分辨率的屏幕成本更好,功耗也比较大,为了考虑整个手机在价格和续航等方面的平衡,1080P似乎是手机屏幕的最佳选择了。
然而习惯了用硬件配置为产品背书的安卓厂商并不这么认为,日,国产手机厂商Vivo发布了Vivo Xplay 3S,它成了全球首款搭配P(简称2K屏幕)屏幕的智能手机,像素密度高达515PPI。
然而这次,并不是所有的安卓旗舰都像720P和1080P那样急速跟进。整个2014到现在,安卓阵营中的旗舰机出现了1080P和2K屏幕共存的局面。1080P仍为三星Galaxy S5、华为P7、Moto X、小米4等各家2014年旗舰机的标配。至于2K屏幕,整个2014年只有少数几款机型跟上,更多的是把它作为旗舰机的升级版如MX4 Pro,Moto X Pro、小米Note顶配版等。从整个手机屏幕的当前发展态势上来看,有一部分安卓厂商更倾向于把1080P屏幕作为旗舰机的标准配置,而将2K屏幕作为产品溢价的一个重要标签。换句话说,但1080P也够用了,但是如果想提高产品的价格品味,2K屏幕也是可以有的。
极限和平衡
刚才我们一直在谈安卓,回过头来看看开启这场屏幕竞赛的iPhone,我们却有些惊愕地发现,从iPhone 4一直到今天的iPhone 6,时间已经过去整整5年了,尽管有尺寸的增大,但是 iPhone屏幕的像素密度一直保持在330PPi左右;当然作为iPhone 6的高配版,iPhone 6 Plus也搭载了一款1080P的屏幕,但其5.5英寸的大尺寸使得它的PPI值不过是400上下,仍然低于多数安卓旗舰的屏幕配置。但是iPhone的销量并没有因为屏幕的问题而受到丝毫的影响。
这似乎在说明一件事儿,即使没有那么好的屏幕,凭借着独特的软硬件结合的完美平衡,也依然可以做出好手机。当然这是独一无二的iPhone,而对于群雄逐鹿的安卓阵营来说,基于同一平台的ROM使得它们不得不在硬件的配置中想方设法体现出自己的优势。而屏幕就成了它们硬件争夺战的一个重要项目。
今年已经有部分旗舰手机如三星S6已经用上2K屏幕,可以想见的是,今年下半年使用2K屏幕的旗舰手机也会逐步增多。不出意外的话,未来的众多安卓旗舰也会将2K屏幕作为标配。
只是如今,我们不得不思考一个问题,手机屏幕的尺寸从刚开始的3.5英寸到4英寸,再到6英寸甚至7英寸,最终多数安卓旗舰机最终把安卓旗舰定位在5英寸上下;因为这个尺寸达到了一个平衡点。在这个平衡点下,手机即可以实现单手操作,又能够呈现更多内容。正如屏幕尺寸需要一个平衡点一样,屏幕的分辨率同样需要一个平衡点。更高的分辨率固然可以提升人们的观感,但同时也会带来更高的成本、更大的功耗;当2K屏幕的500多PPi早已超越人们对于像素点的分辨极限的时候,在一块5到6英寸的屏幕上放置高达的像素量,除了能够提高这块屏幕的成本、加大这块屏幕的功耗,在其他能够提升其观感方面似乎都显得有些多余。
任何事物的发展都有一个极限,安卓手机屏幕的发展似乎也已经接近了它的极限;在这种情况下,与其盲目地追求更高的突破,不如冷静下来想想如何在屏幕分辨率的维度之外寻求一个更为有效的突破点和平衡点。
最后我们想说一句话:不要因为走得太远,就忘了当初为什么出发。
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章
seajs.config({
base: "/resource/passapi/scripts/"
seajs.use('seajs/seajs-css');
seajs.use(['artdialog/src/dialog-plus'], function (dialog) {
$('#favorite').on('click', function(){
$.getJSON('/passapi.php?op=userstatus&callback=?', function(data){
if (data.status == 1) {
var _this = $('#favorite').find('span');
$.getJSON('/?app=favorite&controller=favorite&action=add&jsoncallback=?&contentid='+contentid, function(json){
if(json.state){
_this.html('男明星动态壁纸怎么全屏
男明星动态壁纸
更新时间:
平台:Android
安卓手机男明星动态壁纸怎么全屏
游戏屏幕太小是不是总觉得打斗起来不够爽快呢?小编刚开始玩男明星动态壁纸的时候屏幕两边总是有空的黑屏,游戏的屏幕总是在中间,看得十分不舒服,而且偶尔还会有别的窗口弹出,于是便要关掉窗口再重回游戏。其实这款游戏是有全屏化的选项,大家可以在游戏设置里找一找。或者是去显卡选项里设置拉伸选项,虽然画面稍有变形,但总体视觉效果好多了。跟小编一样不喜欢屏幕黑边的玩家可以试试。
请选择品牌
请选择机型手机
小贴士:建议您想先设置机型,设置后您就直接浏览全部适合您手机的游戏,下载使用更放心。
九游()是手机游戏下载第一门户,提供最新安卓安卓手机男明星动态壁纸下载、礼包、激活码,最好玩的男明星动态壁纸攻略,欢迎访问与玩家交流。
男明星动态壁纸[1.0]热男子图像:热门男性你的android手机动态壁纸! 大热的男子图像,您可以享受你的android幻灯片。 非常低的功耗! 非常容易和简单易用。 o选择幻灯片持续时间 o选择在线更新 你可以坚持你最喜欢的幻灯片,通过触摸右上角。 指令 首页 - >菜单 - >壁纸 - >动态壁纸 精彩热男子图片从http://pulsarmedia.eu/。 尽情享受吧!
点击查看更多
您可能还想关注:
看了男明星动态壁纸怎么全屏 的用户还看了:
关于安卓手机
Android一词的本义指“机器人”,同时也是Google于日宣布的基于Linux平台的开源手机操作系统的名称,主要使用于便携设备,如智能手机和平板电脑。该平台由操作系统、中间件、用户界面和应用软件组成。 专区提供最新手机游戏免费下载。
安卓手机指的是有Android这个操作系统的手机,诺基亚用的都是塞班系统,现在谷歌推出的安卓系统,比塞班开放,软件资源更多,可玩性比塞班高很多,现在市场占有率已经超过塞班了。安卓手机手机用户可通过九游下载。2425人阅读
最近工作忙,上周感冒三天,注意合理作息。
每周更新一篇技术博文,第七篇:《》
此文所涉及内容网上资源比较多,大部分内容都是引用别人的东西做个归类总结,最后简单实现个demo。
一、自适应分辨率
1.google官方提供的自适应分辨率相关文档
一个笑话:IPhone5出来当天,IOS程序员一上班立马找到Android工程师,说:“哥们,你得帮帮我!”Android工程师大惑:平时都趾高气扬的,今天怎么低声下气。问:“啥事?”IOS程序员笑道:“如何适配不同分辨率的屏幕?”Android工程师丢给他一链接,说:“自己看!”&“
笑话归笑话,Android系统支持多分辨率,产品泛滥,用户爽了,但开发人员就特别蛋疼。google官方也提供了很多关于多分辨率支持相关文章:
《Supporting Multiple Screens》文中提到一些相关的术语,部分译文如下:
术语和概念屏幕尺寸屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如2.8寸,3.5寸)。简而言之,Android把所有的屏幕尺寸简化为四类:超大、大、正常、小。&(small,&normal,&large,&and&extra&large.)程序可以针对这四种尺寸的屏幕提供三种不同的布局方案,然后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不需要程序员用代码来干预的。
物理屏幕上的像素总数。与尺寸类似,也有四种:&低、中、高、超高。&(&low,&medium,&high,&and&extra&high.)&密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕通常则会有很多甚至会非常非常多像素排列在同一区域。屏幕的密度是非常重要的,举个例子,长宽以像素为单位定义的界面元素(比如一个按钮),在低密度的屏幕上会显得很大,但在高密度的屏幕上则会显得很小。
屏幕长宽比屏幕的物理长度与物理宽度的比例。程序可以为制定长宽比的屏幕提供制定的素材,只需要用系统提供的资源分类符long和notlong。分辨率屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为宽度长度,但分辨率并不意味着屏幕长宽比。在Android系统中,程序一般并不直接处理分辨率。密度无关的像素(DIP)指一个抽象意义上的像素,程序用它来定义界面元素。它作为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度作为基准,透明地处理所有需要的DIP缩放操作。要把密度无关像素转换为屏幕像素,可以用这样一个简单的公式:pixels&=&dips&*&(density&/&160)。举个例子,在DPI为240的屏幕上,1个DIP等于1.5个物理像素。我们强烈推荐你用DIP来定义你程序的界面布局,因为这样可以保证你的UI在各种分辨率的屏幕上都可以正常显示。支持的屏幕分辨率范围1.5及更早版本的Android系统,在设计的时候假定系统只会运行在一种分辨率的设备上HVGA(320480)分辨率,尺寸为3.2寸。由于系统只能工作在一种屏幕上,开发人员就可以针对那个屏幕来编写自己的程序,而无需去考虑程序在其他屏幕上的显示问题。但自从Android&1.6以来,系统引入了对多种尺寸、多种分辨率屏幕的支持,以此满足拥有各种配置的新平台的运行需求。这就意味着开发人员在针对Android&1.6或更新版系统开发程序的时候,需要为自己的程序在多种分辨率的屏幕上良好显示作出额外的设计。为了简化程序员面在对各种分辨率时的困扰,也为了具备各种分辨率的平台都可以直接运行这些程序,Android平台将所有的屏幕以密度和分辨率为分类方式,各自分成了四类:·四种主要的尺寸:超大、大,正常,小;·四种不同的密度:超高、高(hdpi),中(mdpi)和低(ldpi)。如果需要的话,程序可以为各种尺寸的屏幕提供不同的资源(主要是布局),也可以为各种密度的屏幕提供不同的资源(主要是位图)。除此以外,程序不需要针对屏幕的尺寸或者密度作出任何额外的处理。在执行的时候,平台会根据屏幕本身的尺寸与密度特性,自动载入对应的资源,并把它们从逻辑像素(DIP,用于定义界面布局)转换成屏幕上的物理像素。下表列出了Android平台支持的屏幕中一些比较常用的型号,并显示了系统是如何把它们分类到不同的屏幕配置里的。有些屏幕分辨率并不在下面的列表上,但系统仍会把它们归入下列的某一个类型中。
Figure 1.&Illustration of how Android roughly maps actual sizes and densities to generalized sizes and densities (figures are not exact).
Low density (120),&ldpi
Medium density (160),&mdpi
High density (240),&hdpi
Extra high density (320),&xhdpi
Smallscreen
QVGA (240x320)
Normalscreen
WQVGA400 (240x400)
WQVGA432 (240x432)
HVGA (320x480)
WVGA800 (480x800)&
WVGA854 (480x854)&
Largescreen
WVGA800** (480x800)
WVGA854** (480x854)
WVGA800* (480x800)&
WVGA854* (480x854)&
Extra Largescreen
&Various screen configurations available from emulator skins in the Android SDK (indicated in bold) and other representative resolutions.
2.自适应分辨率常用方法
&在《》一文中介绍了几种技巧,几种方法归纳如下:
1)权重法:利用layout_weight来控制各个结构的权重
2)自定义尺寸法:根据values-WxH的自适应方式,创建不同分辨率的dimens.xml(此方法使用defaults.xml文档也是可行的,defaults.xml文件中可以定义int,String等基本配置信息)
3)代码设置法:在java中动态获取屏幕宽高,再对布局控件进行设置位置和宽高
4)多布局:此法是最常用的方式也是最笨的方法,为多个布局适配不一样的布局文件,在资源文件夹中可以有各种自动适配的命名方式,如:drawable-hdpi、drawable-ldpi、drawable-800x480、drawable-hdpi-854x480、values-land(横屏)、values-port(竖屏)、values-等等,包括上边提到的values-WxH
3.其它布局技术
1)采用HTML设计软件界面,此种方式需要用HTML设计好界面和相关界面上的Javascript响应逻辑操作,如果需要反馈信息就比较麻烦了。这种方法比较适合有网页开发经验的程序员使用,详细见《》一文。
2)jQuery Mobile是 jQuery 在手机和平板设备上的版本,用于创建针对智能手机和平板电脑的跨设备Web应用。详细见《》
二、动态加载子View
有时候需要重用同一个View或者动态切换子View的话,比较好的解决方式是使用LayoutInflater来实例化XML布局为View对象,然后通过ViewGroup的addView方式加载新的View。简单用法如下:
private LayoutInflater mLayoutInflater =
private FrameLayout dynamicChangesView =
private View newViewOne =
mLayoutInflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
newViewOne = mLayoutInflater.inflate(R.layout.view_one, null,false);
dynamicChangesView.addView(newViewOne);
关于LayoutInflater,比较常见的地方是在1)ListView的Adapter中、 2)Dialog或PopupWindow自定义布局、3)动态加载子View 。
相关用法见google提供APIs。
三、本文例子
1.例子部分界面
2.布局文件及资源文件
1)defaults.xml
&?xml version=&1.0& encoding=&utf-8&?&
&resources&
&integer name=&layout_weight_left&&8&/integer&
&integer name=&layout_weight_right&&17&/integer&
&integer name=&layout_weight_one&&1&/integer&
&integer name=&layout_weight_two&&2&/integer&
&integer name=&layout_weight_three&&3&/integer&
&integer name=&layout_weight_four&&4&/integer&
&/resources&
2)styles.xml
&resources&
&!-- 全屏幕拉伸 --&
&style name=&layout_full&&
&item name=&android:layout_width&&fill_parent&/item&
&item name=&android:layout_height&&fill_parent&/item&
&!-- 固定自身大小 --&
&style name=&layout_wrap&&
&item name=&android:layout_width&&wrap_content&/item&
&item name=&android:layout_height&&wrap_content&/item&
&!-- 横向分布 --&
&style name=&layout_horizontal& parent=&layout_full&&
&item name=&android:layout_width&&0px&/item&
&!-- 纵向分布 --&
&style name=&layout_vertical& parent=&layout_full&&
&item name=&android:layout_height&&0px&/item&
&/resources&
3)activity_view_group.xml
&LinearLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:baselineAligned=&false&
android:orientation=&horizontal& &
&LinearLayout
android:id=&@+id/optionsView&
style=&@style/layout_horizontal&
android:layout_weight=&@integer/layout_weight_left&
android:orientation=&vertical& &
android:id=&@+id/selectViewOneBtn&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_btn_one&
android:text=&@string/view_one& /&
android:id=&@+id/selectViewTwoBtn&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_btn_two&
android:text=&@string/view_two& /&
android:id=&@+id/selectViewThreeBtn&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_btn_three&
android:text=&@string/view_three& /&
&/LinearLayout&
&FrameLayout
android:id=&@+id/dynamicChangesView&
style=&@style/layout_horizontal&
android:layout_weight=&@integer/layout_weight_right&
&/LinearLayout&
4)view_one.xml
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_one&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_two&
android:background=&@color/color_two&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_three&
android:background=&@color/color_three&
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_four&
android:background=&@color/color_four&
&/LinearLayout&
5)view_three.xml
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&LinearLayout
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_three& &
&include layout=&@layout/view_one& /&
&/LinearLayout&
&LinearLayout
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_three& &
&include layout=&@layout/view_two& /&
&/LinearLayout&
&LinearLayout
style=&@style/layout_vertical&
android:layout_weight=&@integer/layout_weight_one&
android:orientation=&horizontal&
android:id=&@+id/display_button&
style=&@style/layout_horizontal&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_btn_display&
android:text=&@string/display_button& /&
android:id=&@+id/hide_button&
style=&@style/layout_horizontal&
android:layout_weight=&@integer/layout_weight_one&
android:background=&@color/color_btn_hide&
android:text=&@string/hide_button& /&
&/LinearLayout&
&/LinearLayout&
3.java实现代码
1)DynamicChangesView.java
public class DynamicChangesView extends Activity {
private Button selectViewOneBtn =
private Button selectViewTwoBtn =
private Button selectViewThreeBtn =
private LayoutInflater mLayoutInflater =
public LinearLayout optionsView =
private FrameLayout dynamicChangesView =
private View newViewOne =
private View newViewTwo =
private View newViewThree =
private Context mContext =
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
private void initData() {
mContext =
setContentView(R.layout.activity_view_group);
selectViewOneBtn = (Button) findViewById(R.id.selectViewOneBtn);
selectViewTwoBtn = (Button) findViewById(R.id.selectViewTwoBtn);
selectViewThreeBtn = (Button) findViewById(R.id.selectViewThreeBtn);
optionsView = (LinearLayout) findViewById(R.id.optionsView);
dynamicChangesView = (FrameLayout) findViewById(R.id.dynamicChangesView);
selectViewOneBtn.setOnClickListener(mOnClickListener);
selectViewTwoBtn.setOnClickListener(mOnClickListener);
selectViewThreeBtn.setOnClickListener(mOnClickListener);
dynamicChangesView.setOnClickListener(mOnClickListener);
mLayoutInflater = (LayoutInflater) mContext
.getSystemService(LAYOUT_INFLATER_SERVICE);
newViewOne =
mLayoutInflater.inflate(R.layout.view_one, null,false);
newViewTwo =
mLayoutInflater.inflate(R.layout.view_two, null,false);
// newViewThree
mLayoutInflater.inflate(R.layout.view_three, null,false);
newViewThree = new ViewThree(mContext);
dynamicChangesView.addView(newViewOne);
private OnClickListener mOnClickListener = new OnClickListener() {
public void onClick(View v) {
if(v == selectViewOneBtn){
dynamicChangesView.removeAllViews();
Log.v(&&, &-----------& selectViewOneBtn&);
dynamicChangesView.addView(newViewOne);
}else if(v == selectViewTwoBtn){
dynamicChangesView.removeAllViews();
Log.v(&&, &-----------& selectViewTwoBtn&);
dynamicChangesView.addView(newViewTwo);
}else if(v == selectViewThreeBtn){
dynamicChangesView.removeAllViews();
Log.v(&&, &-----------& selectViewThreeBtn&);
dynamicChangesView.addView(newViewThree);
}else if(v == dynamicChangesView){
if(optionsView.getVisibility() == View.GONE)
optionsView.setVisibility(View.VISIBLE);
optionsView.setVisibility(View.GONE);
2).ViewThree.java (此处实现耦合不好)
public class ViewThree extends FrameLayout{
private LayoutInflater mLayoutInflater =
private Button displayButton =
private Button hideButton =
private DynamicChangesView mActivity =
public ViewThree(Context context) {
super(context);
mActivity = (DynamicChangesView)
mLayoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.addView(mLayoutInflater.inflate(R.layout.view_three, null,false));
displayButton = (Button) findViewById(R.id.display_button);
hideButton = (Button) findViewById(R.id.hide_button);
displayButton.setOnClickListener(mOnClickListener);
hideButton.setOnClickListener(mOnClickListener);
public ViewThree(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
public ViewThree(Context context, AttributeSet attrs) {
super(context, attrs);
private OnClickListener mOnClickListener = new OnClickListener() {
public void onClick(View v) {
if(v == displayButton){
mActivity.optionsView.setVisibility(View.VISIBLE);
}else if(v == hideButton){
mActivity.optionsView.setVisibility(View.GONE);
参考引用:
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:134662次
积分:1749
积分:1749
排名:第12163名
原创:23篇
转载:16篇
评论:153条
(1)(1)(3)(3)(1)(1)(1)(3)(1)(3)(1)(3)(1)(3)(2)(3)(8)

我要回帖

更多关于 安卓手机电脑屏幕同步 的文章

 

随机推荐