您的位置:首页 > 移动开发 > Android开发

【android,1】1.android的基本配置和布局

2013-12-17 19:53 357 查看

1.       sdk目录结构

 

docs -> 帮助文档

platforms -> 最开始是空的 没有内容.

存放的是对应平台模拟器相关的内容

Android-8目录:

images目录是模拟器的镜像文件

Sources 目录: 平台的源代码目录,默认不存在,创建将源文件放在这个目录下。

android.jar 开发framework提供的jar包

 

platform-tools :存放开发工具。

开发用到的工具

aapt.exe 程序打包 ->apk文件 android application package tools

adb.exe 开发的一个调试桥  android debug bridge

dx.bat class->dex的工具

 

samples目录:google工程师给我们提供的实例代码.

 

tools

android开发经常用到的一些工具

android.bat ->创建和启动模拟器

emulator.exe 模拟器对应的进程可执行文件

ddms -> dalvik debug manager system :dalvik调试管理系统集

 

屏幕的大小:

 vga  640*480

hvga  480*320  i5700 G1

qvga  320*240  u880

wvga  800*480 

fwvga 854*480

 

2.       adb指令的使用:

1.查看多少个设备连接到了电脑 adb devices

2.adb -s  :-s 用于指定设备。

3. 查看模拟器日志命令:adb -s 设备名称 logcat 

4.adb pull <remote> <local>  将文件从android放到windows上。            adb push <local><remote>   将文件从 windows 放到 android上。

例:从模拟器中将文件放到windows上:

adb -s emulator-5554 pull /sdcard/aa.txt c:\aa.txt

例:将window中的文件放到模拟器中:

adb -s emulator-5554 push aa.txt /mnt/sdcard/aa.txt

5.当控制台报出了红色的错误,connection timeout

connection error

DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。

[2012-04-13 11:03:51 - Unexpected error while launching logcat.Try reselecting the device.] 远程主机强迫关闭了一个现有的连接。

java.io.IOException: 远程主机强迫关闭了一个现有的连接。

    atsun.nio.ch.SocketDispatcher.read0(Native Method)

    atsun.nio.ch.SocketDispatcher.read(Unknown Source)

    atsun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)

    atsun.nio.ch.IOUtil.read(Unknown Source)

 

使用:adb kill-server  :关闭连接桥。

再使用:adb start-server:启动连接桥。

3.       生成的安卓项目目录介绍:

assets:资产目录,资产目录特点:不会对文件产生引用。

bin目录:eclipse编译的.class文件的目录,并调用dx.bat通过class文件生成.dex

   文件存放在bin目录下。 

          aapt工具完成程序的打包,生成apk文件。放在bin目录下。

res目录:程序的资源文件。

src :java源文件。

AndroidManifest.xml文件介绍:

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

   package="com.example.hello" //包名

   android:versionCode="1"

    android:versionName="1.0" > //程序的版本.

 

    <uses-sdk

       android:minSdkVersion="8"  //指定运行的android平台版本

       android:targetSdkVersion="15" />

 

    <application

       android:icon="@drawable/ic_launcher" //指定应用程序显示的图标

       android:label="@string/app_name" //应用程序的名称。

       android:theme="@style/AppTheme" >

        <activity       //相当于一个界面

           android:name=".MainActivity"  //与类名相同。

//指定界面上显示的名字,引用res/values目录下的strings.xml文

件中的string元素name="test"的值。

            android:label="@string/test" >

           <intent-filter> //作用:当前的activity会在桌面上产生一个图标。

                <actionandroid:name="android.intent.action.MAIN" />

 

                <categoryandroid:name="android.intent.category.LAUNCHER" />

           </intent-filter>

        </activity>

    </application>

 

</manifest>

 

 

4.       R文件的作用:维护一个系统资源的引用,

res目录下的所有文件都会在R文件中生成引用。

assets目录下的文件不会在R文件中生成引用,在打apk包时会原封不动的将资源放置到apk的包assets目录里。

5.       类的介绍

public class MainActivity extends Activity{

 

   @Override

 

    //onCreate的方法会在MainActivity第一次被创建的时候执行。

    public void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

       //将layout目录下的activity_main.xml布局文件引进来。

        setContentView(R.layout.activity_main);

 

    }

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

       getMenuInflater().inflate(R.menu.activity_main, menu);

       return true;

   }  

   

}

6.       电话拨号器程序

6.1.创建项目:在res/layout/main.xml文件中设计手机界面的布局。

    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

   android:layout_height="fill_parent"

    android:orientation="vertical">

 

    <TextView  //文本显示

        android:id="@+id/tv"  //tv 是显示文本的id

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

        android:text="@string/input_number"

        android:textAppearance="@android:attr/textAppearanceLarge"     //显示状态

/>

 

    <EditText //输入框

        android:id="@+id/editText1" //id

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

        android:hint="@string/hint"//指定输入框中的提示信息

        android:inputType="phone"> //指定输入类型,只允许输入电话号码

    </EditText>

 

    <Button

        android:id="@+id/bt_submit"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

        android:text="@string/submit"/> //按钮上的字

 

6.2.在类中编写代码:

MainActivity 类实现了View.OnClickListener接口,说明该类作为点击事件的监听器

覆写接口中的onClick方法,当事件被触发时,执行onclick事件。

public
class
MainActivityextends Activity

implements  View.OnClickListener {

 

    private  EditText
et;

    public
void
onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        //根据id获取文本框组件

       et =  (EditText)
MainActivity.this.findViewById(R.id.editText1);

       //获取按钮组件

       Button button = (Button)this.findViewById(R.id.button1);

       //增加点击事件监听器 .//让当前的activity实现onclicklistener接口

       button.setOnClickListener(this);      

    }

  

    @Override

    public
boolean
onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.activity_main, menu);

        return
true
;

    }

 

    //当按钮被点击到的时候 调用的方法。View.OnClickListener接口中的方法

    public
void
onClick(Viewv) {

       //获取文本框中的数据

       String number = et.getText().toString().trim();

//输入框为空

       if ("".equals(number)) {

           //创建一个提示框,方法参数(上下文,提示信息,显示时间)

           Toast.makeText(getApplicationContext(), R.string.error,

Toast.LENGTH_LONG).show();

           return;

       }

       // 拨打电话

       // intent 意图,
作用:激活组件的.

       Intent intent = new Intent();

       intent.setAction(Intent.ACTION_CALL);

       // Uri.parse()
返回Uri对象,"tel:"+number
为固定写法。

       intent.setData(Uri.parse("tel:" + number));

       // 激活系统的拨打电话的组件(activity)

       startActivity(intent);

   

    }

}

6.3.设置权限:在AndroidManifest.xml文件中添加

<uses-permission
android:name="android.permission.CALL_PHONE"/>

即可.

如果不设置权限,执行时会抛java.lang.SecurityException 异常。

提示需要: android.permission.CALL_PHONE  权限。

 

7.       Logcat的使用:

日志输出的级别 和输出的方式:

       //verbose 提示信息 ,方法参数tag:日志标记,默认设置为类名。

        Log.v(TAG, "verbose");

        // debug 调试

        Log.d(TAG, "debug");

        // info 重要的信息

        Log.i(TAG, "info");

        // warn 警告

        Log.w(TAG, "warn");

        // error 错误的提示

        Log.e(TAG, "error");

 

8.        常见布局介绍 

   在layout目录下的xml文件中,使用 android:orientation指定布局。

1、线性布局:xml文件的根元素为:LinearLayout:表示线性布局。

 

   android:orientation="vertical" :组件线性竖直布局,

   android:orientation="horizontal":表示组件线性水平布局。

 

例 :

 <LinearLayout   

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

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

android:orientation="vertical">

 

2、相对布局:xml根元素节点是RelativeLayout。

<RelativeLayout

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

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

       <TextView

        android:id="@+id/tv_number"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textColor="#FF0000"

        android:layout_alignParentLeft="true" 

        android:layout_alignParentTop="true"

       android:text="@string/sms_number"/>

    <EditText

        android:id="@+id/et_number"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_below="@+id/tv_number"//指定当前控件在哪个控件下面

        android:ems="10"

        android:inputType="phone"
/>

 

android:layout_alignParentRight="true":表示显示在父窗体的最右边。

android:layout_alignParentBottom="true":显示在父窗体的最底部。

android:layout_above="@id/bt_corner"  当前控件在哪个控件的上面

 

3、帧布局:FrameLayout根元素:

  <?xml version="1.0" encoding="utf-8"?>

<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

<ImageView

   

   android:layout_width="fill_parent"

    android:layout_height="fill_parent"

   android:src="@drawable/ic_launcher"

    android:scaleType="center" //图片的大小

//水平居中和竖直居中

   android:layout_gravity="center_vertical|center_horizontal"

    android:visibility="visible" //控制显示

   

    />   

 

4、绝对布局:

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

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

 

   <Button

       android:id="@+id/button1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_x="17dp"

       android:layout_y="182dp"

       android:text="Button" />

5、表格布局:

<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

 

   <TableRow   //指定表格的每一行

       android:layout_width="match_parent"

       android:layout_height="wrap_content" >

 

       <TextView

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

            android:text="textview01" />

 

       <ImageView

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

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

   </TableRow>

 

   <TableRow

       android:layout_width="match_parent"

       android:layout_height="wrap_content" >

 

       <TextView

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

            android:text="textview01"/>

 

       <ImageView

            android:layout_width="wrap_content"

           android:layout_height="wrap_content"

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

</TableRow>

 

9.       Android下的单位:

 px (pixels)像素  :不建议使用.

     一般HVGA代表320x480像素,这个用的比较多。

 

建议使用:dp /dip 代替px。

 dip或dp(device independent pixels)设备独立像素

    这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。

 

字体的单位:

 sp (scaled pixels — best for text size)比例像素

    主要处理字体的大小,可以根据系统的字体自适应。

 

十、发送短息:

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android