IOS制作之怎样在Android中完成悬浮Activity仓酷云
语法弄明白@interface@property这些工具总要知道是干嘛的怎么用基础库一般来讲,为一款已优化过的手机APP开辟平板的版本也不是很难。利用Fragment、decomposeEntities等组件就能够又快又轻松地完成。可是,比来碰到一个项目就没有这么复杂了。我们不但要开辟一个平板APP(基于ActionBarSherlock库,也称作ABS),还必要完成以下功效:[*]完成一个悬浮而且通明显现的Activity,如许用户在举行输出操纵的时分能够看到其余Activity大概它本人的窗口背景;
[*]保留悬浮的Activity的原始尺寸,包含程度偏向和竖直偏向;最好是Activity能够居中显现,在小尺寸设备上能够全屏显现,在年夜尺寸设备上最少显现2/3的巨细。
由于我们之前说过已有了一个开辟好的手机APP,以是假如为了讲这个从头计划再编码那就华侈工夫了。以下的解说和形貌都是基于已有的代码,经由过程修正Activity的完成来适配平板设备,已到达代码的最年夜使用率。
<br>
<br>
义务概述
这里次要有三个义务:
[*]盘算已有的Activity的尺寸并断定它的新坐标地位;
[*]使Activity通明,能够瞥见其背景;
[*]处置背景使其不克不及再和用户举行交互。
盘算窗口巨细
后面提到,我们必要以一个已有的手机APP为基本(利用了ActionBarSherlock库),这个库我们已以一个内部库的情势集成到项目中,并带有源代码。
假如对ABS的源码很熟习大概曾对原生ActionBar的构架有懂得,就会发明:假如改动Activity的巨细,那在挪用setContentView办法的时分,功效没有完成:ActionBar的巨细和地位都没有变更。这时候要做的就是在更高的级别里操纵,在体系绘制ActionBar的时分——ABS大概原生的ActionBar,这时候候还没有任何窗口的数据,如许我们就能够依照必要调剂了。
最不言而喻的体例就是改动Window的尺寸,以是这里必要以下这段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Override
publicvoidonAttachedToWindow(){
super.onAttachedToWindow();
if(getResources().getBoolean(R.bool.is_tablet)&&mOpenAsSmallWindow){
finalViewview=getWindow().getDecorView();
finalWindowManager.LayoutParamslp=(WindowManager.LayoutParams)view.getLayoutParams();
lp.gravity=Gravity.CENTER;
lp.width=mActivityWindowWidth;
lp.height=mActivityWindowHeight;
getWindowManager().updateViewLayout(view,lp);
}
}
代码实行终了后,就能够看到窗口的巨细已依据mActivityWindowWidth和mActivityWindowHeight的值产生了改动。
is_tablet反省只对平板无效,mOpenAsSmallWindow标识暗示是不是让窗口全屏显现大概是不是作为新的窗口衬着。
假如在运转的时分报错了,毛病日记是:ActionBarViewcanonlybeusedwithandroid:layout_width="match_parent"(orfill_parent).那不必忧虑,我们有ABS的源码,间接修正源码就能够了。
翻开ActionBarView这个文件,然后再onMeasure办法里把抛出的非常正文失落——如许应当就能够办理成绩了。安卓上利用的是对照特别的权限把持机制,以是这里我们能够持续深切的未几,大概还能大略盘算菜单项等,不外良多工具我们都不成把控。
注重:这个办法没有在原生ActionBar上测试,由于这里只是在作者的Android版本中测试过。假如要禁用ActionBar,必要找到ActionBarSherlock这个类,然后正文失落以下这行代码:
1
//registerImplementation(ActionBarSherlockNative.class);
代码运转应当没成绩,然后就能够看到不通明背景的Activity了。
<br>
增加通明功效
在完成了Activity的尺寸和巨细都改动后,如今就要让它通明了。能够给这个平板上的Activity主题增加这个属性:
1
<itemname="android:windowIsTranslucent">true</item>
这个属性值可使Activity背景通明。
<br>
看起来不错,效果已基础完成了。
另有一个小成绩:以上测试的都是在Nexus7android4.3上实行,而这个App在Nexus7的android4.2版本中,Activity没有显现。
关于UIView的子类有很多UIButtonUITableView这个都需要各个击破看看文档从名字上就很容易理解是做什么的UIViewController是管理View和Model的类(@张开说UIViewController是用来管理view的,管理model的类自己写,当然,model也可以用UIViewController来管理,不过恐怕成为不好的代码。 近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来, 以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。 自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉 其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。 众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。 在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。 众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。 因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。
页:
[1]