Android入门介绍

一、概述

二、环境搭建
1、Android---电脑===>兼容机
开源/免费
Android联盟

2、Android开发环境搭建

A、java+eclipse3.5+
B、android sdk
C、adt--android的eclipse开发插件(安装)
模拟器
屏幕分辨率
HVGA:320×480
QVGA:240x320
WQVGA400:240X400
WQVAG432:240X432
WVGA800: 480X800

WVGA854: 480X854

3、Android应用程序架构

src/java源代码存放目录

gen/自动生成目录,Android开发工具自动根据你放入res目录的xml界面文件、图标与常量,同步更新R.java文件。通过R.java,应用可以很方便地找到对应资源。另外编译器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编译进软件中,这样可以减少应用程序在手机占用的空间。

res/资源目录,在这个目录中我们可以存放应用使用到的各种资源

assets资源目录,改目录也可以存放资源,而且改目录下的资源不会在R.java自动生成ID,所以读取/assets目录下的文件必须制定文件的路径,如

 file:///android_assets/xxx.3gp

AndroidManifest.xml:列出了应用程序所提供的功能,开发的各种组件需要在该文件中进行配置,

如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。
l

default.properties项目环境信息,



4、基本工具的应用

A、往模拟器上上传东西---File Explore


B、设备管理Device--模拟器管理

C、控制模拟器--Emulator Control


5、第一个Android应用程序创建

应用名
包名---唯一的java包名
Activity名称---类名

6、Android应用的简单组成

AndroidManifest.xml---Android项目清单文件(配置文件)

res目录--存放各种资源文件信息,比如字符串,图片,音乐等,会自动把里面的东西生成应用常量在R文件中。要注意文件名及name必须是合法的java标识符。
文件更特殊,Invalid file name: must contain only [a-z0-9_.]

<string name="address.city">城市</string>---这种资源解析时会变成address_city。


7、Android程序运行的过程

(1)、检查环境
[2012-03-18 11:51:17 - gz1205-helloworld] ------------------------------
[2012-03-18 11:51:17 - gz1205-helloworld] Android Launch!
[2012-03-18 11:51:17 - gz1205-helloworld] adb is running normally.
[2012-03-18 11:51:17 - gz1205-helloworld] Performing cn.itcast.gz.hello.HelloActivity activity launch
[2012-03-18 11:51:17 - gz1205-helloworld] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'android2.2vm'


(2)、把应用上传到模拟器上
[2012-03-18 11:51:17 - gz1205-helloworld] Uploading gz1205-helloworld.apk onto device 'emulator-5554'

(3)、在模拟器上安装
[2012-03-18 11:51:42 - gz1205-helloworld] Installing gz1205-helloworld.apk...
[2012-03-18 11:51:52 - gz1205-helloworld] Success!

(4)、起动程序
[2012-03-18 11:51:52 - gz1205-helloworld] Starting activity cn.itcast.gz.hello.HelloActivity on device emulator-5554
[2012-03-18 11:51:55 - gz1205-helloworld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]

cmp=cn.itcast.gz.hello/.HelloActivity }

8、关于andorid的apk包

jar包
web程序war包
android程序apk包---也是一个普通的压缩文件。---里面的xml资源文件是加密的。

*.class文件被打包到classes.dex (类似于jar包,实际是包含了jar包及一些xml资源文件)===可以通过工具把他里面的jar包提取出来。




四、Android应用程序界面简单开发
1、Activity及View介绍
A、Activity代表一个屏幕--Android四大组件之一

(1)、写一个类继承Activity类

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加入自己的代码
        System.out.println("onCreate()....");
    }
}

(2)、配置Activity-在AndroidManifest.xml进行配置
 <activity android:name="cn.itcast.gz.ui.MainActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
            <!-- 意图过滤器 ,设置为起动Activity,这样就会在开始菜单界面中找到-->
            <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>           
  </activity>


(3)、设置内容,调用Activity的setContentView()方法即可。

B、View---可视化的控件

Veiw-具体的控件,比如Button。
ViewGroup->容器控件,布局控件。

2、直接用程序创建界面。---与Swing类似
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加入自己的代码
        System.out.println("onCreate()....");
        //往Activity中设置内容
        //在写Android组件的时候,凡是要用Context的地方,要么就组件本身继承自Context(直接用this),或者组件提供getContext()方法来获得
        Button btn1=new Button(this);
        //设置按钮的属性
        btn1.setText("确定");
        //this.setContentView(btn1);
        Button btn2=new Button(this);
        //设置按钮的属性
        btn2.setText("取消");
        
        //创建ViewGroup
        //ViewGroup vg=
        //往容器中添加控件
        LinearLayout layout=new LinearLayout(this);
        //设置布局的属性,比如设置Orientation来指定容器中控件的排放方式
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.addView(btn1);
        layout.addView(btn2);
        
        setContentView(layout);
        
    }

}


3、使用标记语言来声明界面。
A、Activity类
public class MainActivity2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //设置屏幕中显示的内容,从layout布局中文件中加载
        setContentView(R.layout.ui);
    }

}
B、布局资源文件layout\ui.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定" >
    </Button>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消" >
    </Button>

</LinearLayout>


五、事件处理

1、事件响应

2、在程序中使用setOnXXXX方法来设置事件监听对象
  //获得Button对象,通过按钮的id去查找
        Button btn=(Button)this.findViewById(R.id.btnOk);  
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("点击了按钮....");
                EditText et=(EditText)findViewById(R.id.txtMsg);
                System.out.println(et.getText().toString());
            }
        });


3、可以直接在布局资源文件中指定事件响应方法-- android:onClick="test"
A、布局文件
 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="test"
        android:text="Button1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="cancel"
        android:text="Button2" />

B、Activity的源代码

public class MainActivity extends Activity  {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
      
    }
    public void test(View v){
        System.out.println("测试一下....");
    }
    public void cancel(View v){
        EditText et = (EditText) findViewById(R.id.txtMsg);
        System.out.println(et.getText().toString());
    }
}


4、处理按键事件--重写Activity的onKeyDown等事件处理方法
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        System.out.println("按键:"+keyCode);
        //return true;
        return super.onKeyDown(keyCode, event);
    }



六、Android应用简单示例及工具应用:
1、电话拔打实例 dial
A、界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/telNumber" />
    <EditText
        android:id="@+id/txtTel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <Button
        android:id="@+id/btnDial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dial"
        />
</LinearLayout>
B、添加代码
public class MainActivity extends Activity {
    private EditText txtTel;
    private Button btnDial;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      
        setContentView(R.layout.main);
        //初始化控件对象--直接查找
        txtTel=(EditText) findViewById(R.id.txtTel);
        btnDial=(Button)findViewById(R.id.btnDial);
        //设置事件监听对象
        btnDial.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //获得用户输入电话号码
                String tel=txtTel.getText().toString();
                //调用Android中的拨号程序来拨号
                Intent it=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+tel));
                //起动通话程序
                startActivity(it);

            }
        });
    }
}
C、出示权限
03-18 16:31:56.414: E/AndroidRuntime(3898): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:110

cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44f7c158 3898:cn.itcast.gz.dial/10039} (pid=3898, uid=10039) requires android.permission.CALL_PHONE


<!-- 出示权限,表示应用要使用到哪些权限的操作 -->
 <uses-permission android:name="android.permission.CALL_PHONE"/>


2、发短信
public void sendSms(View v){
        //获得电话号码及短信内容
        String tel=txtTel.getText().toString();
        String c=txtContent.getText().toString();
        //发送短信,调用手机短信管理硬件设备来发短信
         //获得短信管理器
        SmsManager smsManager=SmsManager.getDefault();
        //撤分短信,确保全部发完
        ArrayList<String> msgs= smsManager.divideMessage(c);
        for (int i = 0; i < msgs.size(); i++) {
            smsManager.sendTextMessage(tel,null,msgs.get(i),null,null);
        }        
        Syste
m.out.println("成功发送了"+msgs.size()+"条短信!");
        
    }

3、消息通知
A、对话框  B、消息栏Notification C、Toast消息

Toast消息的实现
/*
        //创建Toast对象
        Toast toast=Toast.makeText(this, "成功发送了"+msgs.size()+"条短信!", Toast.LENGTH_LONG);
        //显示
        toast.show();
        */
        //直接创建后立即显示
        Toast.makeText(this, "成功发送了"+msgs.size()+"条短信!", Toast.LENGTH_SHORT).show();

4、真机测试

A、卖出价一台手机
B、装驱动usb驱动,从设置中并打开USB调试模式
C、直接运行即可---与在模拟器上一样。

你可能感兴趣的:(Android入门介绍)