android应用程序开发_免费下载.doc_第1页
android应用程序开发_免费下载.doc_第2页
android应用程序开发_免费下载.doc_第3页
android应用程序开发_免费下载.doc_第4页
android应用程序开发_免费下载.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android应用程序开发本文主要介绍的是如何开发一个应用程序。思路是首先介绍怎么用eclipse构建应用程序工程,然后讲解工程下各目录结构的作用,最后通过解析Radio程序具体介绍应用程序的开发要点,主要偏向于UI的布局。一、eclipse构建Hello World工程新建工程:file-new-project-android Application project-next,到此,把app名字填了,一路next最后把Activity 的名字填了,注意开始字母要大写。Finish,工程就建立完成了。运行程序:右击工程名,即hello,-Run As-Run Configurations在Run Configurations 中的Android选项卡选择hello工程。如果你是用真机的话,就选择Laugch 中的Active devices;如果是用虚拟机的话,且已经打开了虚拟机,则选择Laugch中的Active AVDs;而没有开虚拟机的话,选择Automatically。最后Run。下面是Hello world效果图:二、应用程序的目录结构:1.src目录src目录中存放的是该项目的源代码,其内部结构会根据用户所声明的包自动组织,该目录的组织方式为src/aaa/bbb/HelloWord.java,其中aaa/bbb为包名软件开发人员在项目开发过程中,大部分时间是对该目录下的源代码文件进行编写。2.gen目录该目录下的文件全部都是ADT自动生成的,一般并不需要去修改,实际上该目录下定义了一个R.java文件,该文件相当于项目的字典,为项目中用户界面、字符串、图片等资源都会在该类中创建其惟一的ID,当项目中使用这些资源时,会通过该ID得到资源的引用。3.Android4.x.x该目录中存放的是该项目支持的jar包,同时其中还包含项目打包时需要的META-INF目录。我们所引用的android类都是在这里面。4.Android Dependencies及libs从ADT16开始,Android项目中多了一个名为“Android Dependencies” 的库应用文件夹,这是ADT的第三方库新的引用方式。当你需要引用第三方库时,只需在项目中将所有第三方包拷贝到libs文件夹。当eclipse启动时,ADT就会自动帮你完成库的引用,而不需要像以前一样自己Build Path,也不再需要Referenced Libraries了。5.res目录(不支持深度子目录)该目录用于存放应用程序中经常使用的资源文件,其中包括图片、声音、布局文件以及参数描述文件等,其中包括多个目录,ADT会为res下面的文件在R文件中生成一个ID。drawable:主要存放不同分辨率的图片文件:(1)drawable-hdpi里面存放高分辨率的图片,如WVGA(480x800),FWVGA480x854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)(4)drawable-xhdpi里面存放非常高分辨率的图片,如720P(5)drawable-xxhdpi里面存放超高分辨率的图片,如1080P如果想按字流读取该目录下的图像文件,需要将图像文件放在resraw目录中。layout:存放用于布局的xml文件menu:程序的菜单设置。values:资源描述文件,用于存放一些常量(不同类型的变量存放在不同的文件中,该目录中xml的文件名 是不能改的) strings.xml 定义字符串和数值 arrays.xml 定义数组 colors.xml 定义颜色和颜色字串数值 dimens.xml 定义尺寸数据 styles.xml 定义样式values-sw600dp:针对600x1024mdip的屏幕(7英寸平板)values-sw720dp-land:针对720x1280mdip的屏幕(10英寸平板)values-v11:代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xml values-v14:代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml其中API 11+代表android 3.0 +。其中API 14+代表android 4.0 +。anim:存放一些和动画有关的xml文件xml:存放一些自定义的xml文件raw:在该目录中的文件虽然也会被封装在apk文件中,但不会被编译。在该目录中可以放置任意类型的文件,例如,各种类型的文档、音频、视频文件等 6.assets目录assets也是一个资源文件夹,assets中的资源可以被打包到程序里面,和Res不同的地方是,ADT会为res下面的文件在R文件中生成一个ID,而不会为assets中的资源生成ID,因此要使用该目录下面的文件,可以通过完整路径的方式进行调用。或是在程序中使用“getResources.getAssets().open(text.txt)”得到资源文件的输入流InputStream对象。(该目录下面的文件不会被编译,直接复制到程序安装包中)res/raw和assets文件夹来存放不需要系统编译 成二进制的文件,例如字体文件等,这两个文件夹有很多相同的地方,例如都可以把文件夹下的东西原封不动的拷贝到应用程序目录下,但是两个文件夹也有一些不同的地方,首先就是访问方式不同,res/raw文件夹不能有子文件夹,文件夹下的资源可以使用getResources().openRawResource(R.raw.id)的方式获取到,而assets文件夹可以自己创建文件夹,并且文件夹下的东西不会被R.java文件索引到,必须使用AssetsManager类进行访问。如果你需要更高的自由度,尽量不受android平台的约束,那么/assets这个目录就是你的首选了,因为支持深度子目录7.AndroidManifest.xml文件该文件为应用程序的系统控制文件,其中对应用程序的权限、应用程序中Activity、Service等进行声明,同时还对程序的版本进行说明。8.perties文件该文件为项目的配置文件,从不需要人为改动,系统会根据情况自动对其进行管理,其中主要描述了项目的版本等基本信息。三、Radio程序解析:上图是radio的运行界面。1、UI布局layout/activity_radio.xml/控件背景 /在布局底部,即此线性布局在相对布局底部 /此控件在线性布局中,所占的比例 /因为所有按键的属性都是类似的,所以在上一个按键定义的属性定义在styles.xml中 /跟按键一样,所有ImageView的属性类似,故把上一个的ImageView属性定义在styles.xml中 。 关于控件的更多属性,或是更详细的解释,可以参考本文中的“附件一 控件的一些属性”部分。2、RadioActivity.javapackage com.example.radio;import android.os.Bundle;import android.app.Activity;。public class RadioActivity extends Activity private ImageView imageViewBG;private TextView fmText;private int freq;static final int AM_FREQ = 2000;private Button button_band;private Button button_auto; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio);/使用上文中定义的UI布局文件 initView();/初始化一些控件 showImageView();/用java代码显示ImageView控件 freq = 8939; showFreqText(freq); private Button.OnClickListener bListener = new Button.OnClickListener() public void onClick(View v)switch(v.getId()case R.id.button_band:freq += 500; showFreqText(freq); break;case R.id.button_auto:freq -= 500; showFreqText(freq); break; ; private void initView() fmText = (TextView)findViewById(R.id.text_fm);/根据id找到xml中定义的控件 button_band = (Button)findViewById(R.id.button_band); button_auto = (Button)findViewById(R.id.button_auto); button_band.setOnClickListener(bListener);/按键监听 button_auto.setOnClickListener(bListener); private void showFreqText(int freq) String text = new String(); if(freq AM_FREQ) if(freq = 10000) text = ; text += freq/100 + . + freq%100 + + MHz; else if(freq = 1000) text = ; text += freq + + KHz; fmText.setText(text);/设置字符串 private void showImageView()/*/ Bitmap map = BitmapFactory.decodeResource(getResources(), R.drawable.transparent_bg); int w = map.getWidth(); int h = map.getHeight(); int new_w = 1280; int new_h = 450; float scaleWidth = (float)new_w)/w; float scaleHeight = (float)new_h)/h; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedMap = Bitmap.createBitmap(map,0,0,w,h,matrix,true); BitmapDrawable bmd = new BitmapDrawable(resizedMap);/*这一段为图片的放大,在此可以忽略 */ imageViewBG = (ImageView)findViewById(R.id.imageView_bg);/根据id找到xml中定义的控件 imageViewBG.setBackgroundResource(R.drawable.transparent_bg);/设置背景图片 / imageViewBG.setImageDrawable(bmd); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.radio, menu); return true; 附件一 :控件的一些属性1.单位:dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。px: pixels(像素). 不同设备显示效果相同,这是绝对像素,是多少就永远是多少不会改变。sp: scaled pixels(放大像素)。与刻度无关的像素,主要用于字体显示best for textsize,可以根据用户的字体大小首选项进行缩。根据 google 的建议,TextView 的字号最好使用 sp 做单位。dp:很简单,和dip是一样的。2、控件宽、高:android:layout_width、android:layout_ height其值可以为50dip、50px等,或是fill_parent、wrap_content、match_parent。fill_parent: 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。wrap_content: 设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。match_parent: Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了。3、控件排布android:orientation=”horizontal”android:orientation=”vertical“4、控件间距android:layout_marginLeft=”5dip”/距离左边android:layout_marginRight=”5dip”/距离右边android:layout_marginTop=”5dip”/距离上面android:layout_marginRight=”5dip”/距离下面android:paddingLeft=”5dip”控件显示位置android:gravity=”center”/left,right,top,bottomandroid:gravity=”center_horizontal”android:layout_gravity是本元素对父元素的重力方向。android:layout_gravity属性则设置控件本身相对于父控件的显示位置android:gravity是本元素所有子元素的重力方向。android:layout_gravity=”center_vertical”android:layout_gravity=”left|bottom”5、TextView中文本字体android:text=”String/text1/在string.xml中定义text1的值android:textSize=”20sp”android:textColor=”#ff123456”android:textStyle=”bold”/普通(normal),斜体(italic),粗斜体(bold_italic)android:ellipsize=”end”/ TextView中,控制其以结束android:singleLine=”true”/只有一行6、定义控件是否可见android:visibility=”visible”/可见android:visibility=”invisible”/不可见,但是在布局中占用的位置还在android:visibility=”gone”/不可见,完全从布局中消失7、定义背景图片android:background=”drawable/img_bg”/img_bg为drawable下的一张图片seekbar控件背景图片及最大值android:progressDrawable=”drawable/seekbar_img”android:thumb=”drawable/thumb”android:max=“60android:layout_alignWithParentIfMissing=”true”仅在RelativeLayout中有效:8、在父亲布局的相对位置android:layout_alignParentLeft=”true”/在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论