Android2.2快速入门二

六、 布局和容器

6.1   帧布局(FrameLayout)

放入其中的所有元素都被放置最左上的区域,无法为这些元素指定一个确切的位置。如果有多个子元素,那么后边的子元素的显示会重叠在前一个元素上。

6.2   线性布局(LinearLayout)

常用布局,子元素按行或列依次排列。

android:layout_gravity是本元素对父元素的重力方向。

android:gravity是本元素所有子元素的重力方向。

6.3   绝对布局(AbsoluteLayout)

可以让子元素指定准确的x/y坐标值,(0, 0)为左上角,没有页边框,允许元素之间互相重叠。

6.4   相对布局(RelativeLayout)

允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)

6.5   表格布局(TableLayout)

将子元素的位置分配到行(TableRow)中,注意不会显示边框线也不能够跨行合并单元格。

例子:http://hi.baidu.com/hoyah/blog/item/d9db34275d6f361a8b82a171.html

6.6   选项卡(TabWidget)

例子:http://fatkun.com/2010/06/android-tabwidget.html

 

七、 常用代码

7.1   在当前Activity中启动另外一个Activity

startActivity(new Intent(this,目标Activity.class));

 

7.2   从当前ContentView从查找控件

(Button)findViewById(R.id.btnAbout)

R.id.btnAbout指控件id。

 

7.3   获取屏幕宽高

DisplayMetrics dm = new DisplayMetrics();

//获取窗口属性

getWindowManager().getDefaultDisplay().getMetrics(dm);

int screenWidth = dm.widthPixels;//320

int screenHeight = dm.heightPixels;//480

 

7.4   无标题栏、全屏

//无标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

//全屏模式

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

注意在setContentView()之前调用,否则无效。

 

7.5   注册activity

所有用到的Activity都必须在AndroidManifest.xml中注册,否则会报空指针错误。如:<activity android:name=”com.common.TestView”> ,注意是包名+类名。

 

八、 Adb命令行

8.1   DOS进入android-sdk-windowstools目录

8.2   Linux

登录linux命令:adb shell

列出当前文件:ls

删除文件:rm 文件名

8.3   Sqlite

登录sqlite命令:sqlite3

8.4   Adb命令

列出当前有哪些活动的模拟器:adb devices

上传文件:adb push

安装apk文件:adb install android123.apk

 

九、 Apk文件破解

9.1   获取apk的资源图片

直接用 WinRAR打开,res/drawable直接拖拽出来即可。

 

9.2   获取xml文件信息

虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址:https://code.google.com/p/android-apktool/

下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,DOS进入该目录,输入:aapt d 91callinfo.apk 91callinfo,这里第四个参数为破解完存放的路径。

 

9.3   反编译dex获取Java源代码

Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址:http://code.google.com/p/dex2jar/。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,如果只是看看源码的话可以用jd-gui,下载地址:

http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip

dex文件(classes.dex)可以用WinRAR从apk文件中解压出来。

 

十、 小技巧

10.1          使用系统的图标

例如调用系统打电话的图标:

<ImageView android:src=”@android:drawable/ic_menu_call”

图标名称和效果(Android1.5和1.6):

http://since2006.com/android/1.5-drawables.php

http://since2006.com/android/1.6-drawables.php

 

10.2          让控件透明,如ImageButton

设置android:background=”@null”

 

10.3          在layout中直接指定onclick方法

不用手动绑定,在layout中设置android:onClick=”methodName”,methodName为对应Activity中的方法,如下格式:public void methodName(View view){} (适应1.6以上版本)

 

10.4          用PC键盘控制模拟器

PC键盘 模拟器按键 说明
Home Home 主页
F2 Menu 菜单
Esc Back 后退
F3 Call 打电话
F4 Hangup 挂断
F5 Search 搜索
Ctrl+F12   横竖屏切换

 

 

10.5          进入界面就显示/隐藏软键盘

在AndroidManifest.xml中设置activity的

android:windowSoftInputMode=”stateHidden”

 

10.6          界面可视化布局工具

系统提供可视化布局并不好用,这里推荐一款,布局完后点生成代码即可:

DroidDraw:http://www.droiddraw.org/

 

10.7          在Eclipse中看Android的源码

将源代码拷贝至android-sdk-windowsplatformsandroid-4sources下即可。注意源码版本对应android-4文件夹,这里指Android1.6的源码。

 

十一、 Q & A

11.1          用模拟器调试频繁连不上,或者报emulator-5554 disconnected的错误?

Window(窗口) -> Show Views(显示视图) -> device -> view menu(视图菜单)

-> Reset adb

 

11.2          匿名类中如何使用this?

classname(类名).this

 

11.3          程序出错后模拟器上仅显示应用程序遇到问题将关闭怎么办?

可以从LogCat中检查错误,默认LogCat在DDMS视图中,可以通过以下方法调整到Java视图与控制台并列显示:点击Eclipse左下角 ,点开后在其他里面找到Android目录下的LogCat拖拽出来即可。

 

十二、后期维护

12.1  2010-10-1

补充了许多控件的截图,导出PDF下载: http://download.csdn.net/source/2729442

12.2  2010-10-18

补充了GestureOverLayView的文章链接,文章1是英语的,文章2为中文的。

 

结束

资料均来自网络,感谢这些人的分享~~

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注