Android01————快速入门

一、安卓入门:

1.Android项目的目录结构
Activity:应用被打开时显示的界面
src:项目代码
R.java:项目中所有资源文件的资源id
Android.jar:Android的jar包,导入此包方可使用Android的api
libs:导入第三方jar包
assets: 放置一些程序所需要的媒体文件.比较大的媒体资源文件,原封不动打包成abk,不生成资源id
 bin:存放编译打包后的文件
res:存放资源文件,存放在此文件夹下的所有资源文件都会生成资源id
drawable:存放图片资源
layout:存放布局文件,把布局文件通过资源id指定给activity,界面就会显示出该布局文件定义的布局
menu: 存放android的OptionsMenu菜单的布局
Strings.xml:存放字符串资源,每个资源都会有一个资源id
AndroidManifest.xml: android应用程序的入口文件. 声明了android里边的组件. 和相关配置信息.可以叫做配置文件或者清单文件
里面的包是项目在系统中的唯一识别,比如,你在手机里装了两个微信,但是包名相同,新的版本会覆盖旧的版本;改过包名以后mian—activity里面要导包 ,因为原来的包名默认是相同的,如果想引用R文件里的资源,必须导包,理解就好
一个项目可以多个activity,因为一个应用可以有多个入口;图标显示的是activity的图标,而不是application的图标;因为入口activity可以有多个,而application只有一个;
proguard-project.txt: 加密当前程序所使用.

2.DDMS

 Dalvik debug monitor service
 Dalvik调试监控服务

3.常用的adb指令
Android debug bridge:安卓调试桥
adb start-server:启动adb进程
adb kill-server:杀死adb进程
adb devices:查看当前与开发环境连接的设备,此命令也可以启动adb进程
adb install XXX.apk:往模拟器安装apk
adb uninstall 包名:删除模拟器中的应用
adb shell:进入linux命令行    
    ps:查看运行进程
    ls:查看当前目录下的文件结构
netstat -ano:查看占用端口的进程


4.打包安装过程(Run as Android Application ) :
    1. 生成apk文件.
        1). 生成.dex文件.
        2). 资源索引表的生成resources.arsc.
        3). 准备未编译文件.
        4). 清单文件AndroidMenifest.xml文件转换成二进制.
        5). 使用debug.keystore对整个应用程序进行打包签名.

    2. 加载apk文件到模拟器中.
        把apk文件加载到/data/local/tmp/xxx.apk

    3. 安装应用程序.
        1). 把/data/local/tmp/xxx.apk文件, 剪切/data/app/包名-1.apk
        2). 在/data/data/文件夹下以包名创建一个文件夹, 用于存储当前程序的数据.
        3). 在packages.xml和packages.list文件中分别添加一条记录.

5.四种点击事件

创建一个内部类定义点击事件
采用匿名内部类创建点击事件
让activity实现点击事件
在布局文件中绑定一个点击的方法(基于反射找到方法,找不到就报错)
6.eclipse与sdk要建立连接:

 preferences--->android---->sdklocation一般不用配,如果电脑中有多个sdk时用;
7.vm heap虚拟机堆内存大小

 vm并不是单例的,只是个程序,软件,每运行一个应用,再启动一个vm的实例

8.tools platform-tools,platforms的区别,

tools标准工具 
platform-tools 开发工具adb 
platforms平台的各种版本
extra 扩展工具

9.什么时候需要权限
可能产生费用或者侵犯用户隐私需要权限,如上网打电话,查看数据库文件读写等;

10.注意事项
打电话使用动作机制,而发短信不需要,因为google不希望上层程序员使用底层的API,发短信可以直接使用google的API;

例1 电话拨号器

布局文件:

  
		
		    
		
		    
		    
		
		    

activity:

 

package com.itheima.phone;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
	private EditText  et_phone;

	/**
	 * activity创建的时候 调用的方法
	 */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置activity显示的内容
        setContentView(R.layout.phone_ui);
        
        //寻找edittext  界面初始化的时候寻找控件 ,避免多次的查询
        et_phone = (EditText) findViewById(R.id.et_phone);
        
        //查找到一个关心的按钮
        Button  bt_dail= (Button) this.findViewById(R.id.bt_dail);
        //给按钮注册一个点击事件的监听器
       // bt_dail.setOnClickListener(new MyButtonListener());
        
        //2.点击事件的第二种写法,匿名内部类
       /* bt_dail.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				callPhone();
			}
		});*/
        
       //3.点击事件的第三种写法
        //bt_dail.setOnClickListener(this);
        
        //点击事件的第四种写法
        
    }

    
    
    
    private void callPhone() {
		String number = et_phone.getText().toString().trim();
		if("".equals(number)){
			Toast.makeText(MainActivity.this, "电话号码不能为空", Toast.LENGTH_SHORT).show();
		}else{
			//TODO:拨打电话  激活系统的拨号应用 把电话号码传给系统的应用.
			// 打人  打酱油 动作+数据 泡茶 泡妞
			Intent intent = new Intent();//意图
			intent.setAction(Intent.ACTION_CALL);//设置动作
			intent.setData(Uri.parse("tel:"+number));
			startActivity(intent);
		}
	}




	/**
     * 点击事件的第一种写法 .  写一个内部类.实现点击事件的接口
     * @author Administrator
     *
     */
    private class MyButtonListener implements OnClickListener{
    	/**
    	 * 当按钮被点击的时候调用
    	 */
		@Override
		public void onClick(View v) {
		
			callPhone();
		}
    	
    }



    //点击事件的第三种写法 让activity实现点击事件的接口
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.bt_dail:
			callPhone();
			break;

		default:
			break;
		}
		
	}
	//4.点击事件的第四种写法  在xml文件里面定义 button点击的时候 调用什么方法
	public void dailPhone(View view){
		callPhone();
	}
	
}

添加权限

	



例2:短信发送:

布局:


	
	    
	
	    
	    
	
	    
	
	    
	
	    

activity:

package com.itheima.sms;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText et_number;
	private EditText et_content;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //查询到 我们关心的两个控件 
        et_number = (EditText) findViewById(R.id.et_number);
        et_content = (EditText) findViewById(R.id.et_content);
   
    }

    
    public void sendSms(View view){
    	String number = et_number.getText().toString().trim();
    	String content = et_content.getText().toString().trim();
    	if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){
    		Toast.makeText(this, "号码或者内容不能为空", 0).show();
    	}else{
			//获取短信管理器的一个实例
    		SmsManager smsManager = SmsManager.getDefault();
			//短信拆分发送
    		ArrayList messages = smsManager.divideMessage(content);
    		for(String message : messages){
    		smsManager.sendTextMessage(number, null, message, null, null);
    		}
    		Toast.makeText(this, "发送成功", Toast.LENGTH_LONG).show();
    	}
    }
}


 权限:

 
































你可能感兴趣的:(Android)