Androi开发基础

来源:互联网 发布:mac os x 10.11.6原版 编辑:程序博客网 时间:2024/06/05 20:36

   Android系统包说明

android.app :提供高层的程序模型、提供基本的运行环境

android.content :包含各种的对设备上的数据进行访问和发布的类

android.database :通过内容提供者浏览和操作数据库

android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.

android.location :定位和相关服务的类

android.media :提供一些类管理多种音频、视频的媒体接口

android.net :提供帮助网络访问的类,超过通常的Java.net.* 接口

android.os :提供了系统服务、消息传输、IPC 机制

android.opengl :提供OpenGL 的工具

android.provider :提供类访问Android 的内容提供者

android.telephony :提供与拨打电话相关的API 交互

android.view :提供基础的用户界面接口框架

android.util :涉及工具性的方法,例如时间日期的操作

android.webkit :默认浏览器操作接口

android.widget :包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用

 

四、             Android项目工程说明

src        存放java源代码。

gen       存放编译器自动生成的java代码,这个目录下的文件是系统自动维护的。

assets 存放在这个目录下的文件,无论是mp3还是图片,都会被打包到发布包中。

res       资源文件目录,添加到这个目录下的文件都会在gen下的R.ava文件中显示出来;如果res下存放的资源在应用中没有使用到,那么在gen下的R.java的文件中就不会显示,那么打包的时候就不会将这部分资源打包,减少了应用的发布文件大小。

drawable:存放图片文件,注意图片名称必须是[a-z0-9_.]组成;drawable目录下不能分子级目录,只能通过命名方法来加以区分。

layout:存放与UI相关的布局文件,都是xml文件。

raw       直接复制到设备中的任意文件,不会被编译,可以放数据库文件。

values 存放字符串,颜色,数组等常量数据。可以任意命名,但是通常命名:color.xmlstrings.xmlarray.xmlstyles.xmldimens.xml(定义尺寸值:dimension value)

xml       任意的XML文件,在运行时可以通过调用Resources.getXML()读取。

 

参见http://www.inandroid.cn/bbs/thread-1401-1-1.html 

 

五、             基本控件

5.1     文本框(TextView)、自动完成(AutoCompleteTextView)

自动完成的效果和代码:http://android.yaohuiji.com/archives/390

AutoCompleteTextView

5.2     编辑框(EditText)

android:hint     内容为空时提醒的信息,如“请输入”

5.3     下拉列表(Spinner)

android:entries        可以通过在strings.xml中指定string-array来设置选项。

5.4     进度条(ProgressBar)

效果和代码:http://www.eoeandroid.com/viewthread.php?tid=1081

5.5     拖动条(SeekBar)

5.6     评分条(RatingBar)

 

5.7     按钮(Button)、图片按钮(ImageButton)

Button

ImageButton

5.8     图片框 (ImageView)、画廊(Gallery)

ImageView

Gallery

画廊效果:http://android.yaohuiji.com/archives/565

5.9     日期和时间(DatePickerTimePicker)

AnalogClock

DigitalClock

Chronometer(计时器)

DatePicker

DatePickerDialog

TimePicker

TimePickerDialog

5.10 单项选择(RadioGroupRadioButton)、多项选择(CheckBox)

CheckBox

RadioButton

ToggleButton

5.11 表格 (GridView)、列表(ListView)

GridView

ListView

GridViewhttp://blog.csdn.net/hellogv/archive/2009/09/18/4567095.aspx

ListViewhttp://www.cnblogs.com/allin/archive/2010/05/11/1732200.html

5.12 对话框(AlertDialog)、对话框中的进度条(ProgressDialog)

AlertDialog

AlertDialoghttp://android.yaohuiji.com/archives/655

ProgressDialoghttp://aina-hk55hk.javaeye.com/blog/679134

5.13 菜单(Menu)

5.14 提示(Toast)

类似于MessageBox,非模式窗口。如:

Toast.makeText(this, "信息", Toast.LENGTH_SHORT).show();

5.15 GestureOverLayView

文章1文章2

5.16 HorizontalScrollView

5.17 MapView

5.18 VideoView

5.19 WebView

5.20 ZoomControls

 

六、             布局和容器

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-windows\tools目录

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.bz2apktool-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)可以用WinRARapk文件中解压出来。

 

十、             小技巧

10.1          使用系统的图标

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

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

图标名称和效果(Android1.51.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 voidmethodName(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          界面可视化布局工具

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

         DroidDrawhttp://www.droiddraw.org/

 

10.7          Eclipse中看Android的源码

         将源代码拷贝至android-sdk-windows\platforms\android-4\sources下即可。注意源码版本对应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中检查错误,默认LogCatDDMS视图中,可以通过以下方法调整到Java视图与控制台并列显示:点击Eclipse左下角 ,点开后在其他里面找到Android目录下的LogCat拖拽出来即可。

 


原创粉丝点击