|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
语法弄明白@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来管理,不过恐怕成为不好的代码。 |
|