Android开发平台搭建及基础知识

1.1     平台简介

Android开发平台由JAVA JDK1.60,eclipse插件,Android SDK模拟平台,以及ADT插件所组成。安装好以上工具之后就可以在没有Android系统手机或者电脑的情况下进行Android应用的开发,下面介绍Android开发平台的搭建的大致步骤。

1.2     安装过程

一:下载安装JAVA JDK1.60版本。(省略)

二:下载eclipse3.5以上版本。

注意:为了后面的离线安装,请使用eclipse 3.5伽利略版本,或者eclipse 3.6 正式版

三:下载一个Android SDK完全包,可以快速进行Android SDK的安装。

四:ADT插件安装,在完成以上步骤后,下载ADT进行离线快速安装。

五:进入eclipse进行必要的配置。出现可以建立Android project,则安装完成。

2       Android应用开发

2.1     Android布局

2.1.1  概述

Android 布局文件存放在res->layout中的xml文件之中。当我们需要对界面进行布局时,就要去写layout中的布局文件,文件写好以后,在代码实现中创建Activity时调用setContentView(R.layout.main);即可实现布局。所有控件与布局以及一切资源Android都会自动在R.java中生成他自己专有的ID,在代码调用时,直接根据其ID进行使用。常用布局有五种:线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(TableLayout)、单帧布局(FrameLayout)、绝对布局(AbsoluteLayout),下面将介绍这次所用到的三种布局。Eg见控件部分。

2.1.2  线性布局(LinearLayout)

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

LinearLayout常用属性:

android:layout_width定义其布局宽度      android:layout_height定义其布局高度

android:orientation定义其布局排版方向    android:layout_weight定义其布局所占权重

2.1.3  单帧布局(FrameLayout)

它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象,所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充。即可以利用透明度来实现一些控件的叠加效果。所以主要是控制控件的透明度来实现,控件透明度控制通过android:background=”#aabbccdd”,aa:表示透明度aa=255则不透明(在参数中是16进制),bbccdd是RGB命名规则。

2.1.4  相对布局(RelativeLayout)

RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。常用属性有

android:layout_toLeftOf在某一个控件的左边  android:layout_toRightOf在某一个控件的右边

android:layout_alignParentLeft在父控件的左边,同理具有父控件的右边,顶部,底部等属性。

2.2     常用控件

2.2.1  TextView

用于文本的显示

<TextView

              android:text="@string/home"

              android:background="#ffff00"

              android:layout_width="fill_parent"(充满父控件)

              android:layout_height="wrap_content"(刚好够文本显示)

               android:gravity="center_horizontal"

              android:textSize="20px"/>

android:text:显示的文本,android:background:文本框背景,

android:gravity:文本显示位置,android:textSize:文本显示大小

2.2.2  Button

按钮

<Button

           android:id="@+id/Button2"

           android:layout_width="wrap_content"

           android:layout_height="fill_parent">

</Button>

android:id:定义Button控件的ID,其他两个属性见上。

2.2.3  WebView

用于一个网页的显示,与以上两个控件具有相似的属性。在使用此控件时必须注意,在实现我们自己的Activity上网时,必须在manifest.xml文件中进行权限的申请。即加入 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

2.2.4  EditText

属性和TextView几乎相同,这个控件用来实现文本的获取。

2.2.5  SlidingDrawer

抽屉控件,隐藏屏外的内容,并允许用户通过handle以显示隐藏内容。它可以垂直或水平滑动,它有俩个View组成,其一是可以拖动的handle,其二是隐藏内容的View。它里面的控件必须设置布局,在布局文件中必须指定handle和content。Eg:

<SlidingDrawer

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:handle="@+id/handle"

    android:content="@+id/content"

    android:orientation="vertical"

    android:id="@+id/slidingdrawer">

 

  <ImageButton android:id="@id/handle"

    android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:src="@drawable/up" />

 

  <LinearLayout android:id="@id/content"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:background="#ffffff">

 

   <TextView android:text="这是一个滑动式抽屉的示例"

   android:id="@+id/tv"

   android:textSize="18px"

   android:textColor="#00ff00"

   android:gravity="center_vertical|center_horizontal"

   android:layout_width="wrap_content"

   android:textStyle="bold"

   android:layout_height="wrap_content"

   >

   </TextView>

</LinearLayout>

2.2.6  ImageView

用于图片的显示,图片资源必须在res->drawable中获取。属性同TextView。

2.2.7  ImageButton

能够设计一个任意图形作为我们所需要按键,丰富按键设计。属性同Button,同样图片必须在res->drawable中获取资源。

2.2.8  ViewFlipper

翻转视图,可以简单实现子页面的切换它只需使用addView方法添加几个View,每个View对应的是一个页面,即可完成对于多页面的管理,在android上实现手势的识别也比较简单,可以实现OnTouchListener和OnGuestureListener接口,然后在OnTouch函数中注册GestureDetector来判别手势动作。实现滑动翻页效果,还配合旋转(rotate)、缩放(scale),移动(translate)、淡入淡出(alpha)。Eg

布局文件:<ViewFlipper 

    android:id="@+id/ViewFlipper01"  

         android:layout_width="fill_parent"    

         android:layout_height="fill_parent"  

         android:persistentDrawingCache="animation"  

         android:inAnimation="@anim/push_left_in"  

       android:outAnimation="@anim/push_left_out"

       <LinearLayout

           android:id="@+id/page_home"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

           android:orientation="vertical">

           <TextView

              android:text="@string/home"

              android:background="#ffff00"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"

              android:textSize="20px"/>

           <ImageView   

              android:id="@+id/myImageView1"      

              android:layout_width="fill_parent"  

              android:layout_height="fill_parent"

              android:src="@drawable/picture1">   

           </ImageView>

        </LinearLayout>

        <LinearLayout 

        android:id="@+id/page_publish"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

           android:orientation="vertical">

           <TextView

              android:text="@string/publish"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"

              android:background="#ff00ff"

              android:textSize="20px"/>           

          <ImageView      

              android:id="@+id/myImageView2"      

              android:layout_width="fill_parent"  

              android:layout_height="fill_parent"

              android:src="@drawable/picture2">   

           </ImageView>

         </LinearLayout>

         <LinearLayout 

        android:id="@+id/page_change"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

           android:orientation="vertical">

           <TextView

              android:text="@string/change"

              android:background="#00ffff"

              android:layout_width="fill_parent"

              android:layout_height="wrap_content"

              android:textSize="20px"/> 

            <ImageView   

              android:id="@+id/myImageView3"      

              android:layout_width="fill_parent"  

              android:layout_height="fill_parent"

              android:src="@drawable/picture3">   

           </ImageView>

        </LinearLayout>        

 </ViewFlipper>

源代码:

         @Override

    public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX,

           float velocityY) {

       if (e1.getX() - e2.getX() > 90) {

           this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));

           this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));

           this.flipper.showNext();

           return true;

       }

       else if (e1.getX() - e2.getX() < -90)

       {

           this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));

           this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));

           this.flipper.showPrevious();

           return true;

       }

       return false;

    }

push_right_in定义:<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate android:fromXDelta="100%p" android:toXDelta="0"

       android:duration="500" />

    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"

       android:duration="500" />

</set>

其他简单动画可以类推出来。

2.3     事件监听

2.3.1  匿名内部类

Button_publish.setOnClickListener(new OnClickListener(){

                  @Override

                         public void onClick(View v) {

                     // TODO Auto-generated method stub

                     while(flipper.getCurrentView().getId()!=R.id.page_publish)

                         flipper.showNext();

                     Button_publish.setBackgroundResource(R.drawable.tab_two_highlight);

                     Button_home.setBackgroundResource(R.drawable.tab_one_normal);

                     Button_change.setBackgroundResource(R.drawable.tab_one_normal);

                     Button_more.setBackgroundResource(R.drawable.tab_one_normal);

                  }

                  });

2.3.2  普通内部类

//监听器的绑定

Button_publish.setOnClickListener(new mypublishOnClickListener());

//监听器的定义,以及在内部实现事件发生时的处理方法

    class mypublishOnClickListener implements OnClickListener {

       @Override

       public void onClick(View v) {

           // TODO Auto-generated method stub

           while(flipper.getCurrentView().getId()!=R.id.page_publish)

              flipper.showNext();

           Button_publish.setBackgroundResource(R.drawable.tab_two_highlight);

           Button_home.setBackgroundResource(R.drawable.tab_one_normal);

           Button_change.setBackgroundResource(R.drawable.tab_one_normal);

           Button_more.setBackgroundResource(R.drawable.tab_one_normal);

       }

    }

上面两种监听器实现方式是相同的效果的,都是当按下这个按钮后,执行某一个处理事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值