Android学习笔记

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/53233459

1、Android应用的生成过程:

(1)源代码.java文件经过JVM编译成.class文件;

(2)通过SDK中的dx工具生成.dex文件(该文件可在项目的bin目录下找到);

(3)经打包并签名后生成.apk文件;

(4)在开发环境中使用Run as,即把.apk文件安装到手机中;

(5)也可以使用SDK安装目录tools下的adb命令进行软件的安装与卸载:

<1>安装:adb install c:\xxx.apk;

<2>卸载:adb uninstall imu.cs.phone;

Android应用的启动过程:

(1)创建进程;

(2)创建主线程;

(3)在主线程中实例化MainActivity;

(4)调用OnCreate()。

2、Android应用程序架构:

(1)src:java源代码存放目录;

(2)gen:自动生成目录。其中包含R.java文件,开发工具会自动根据放入res目录的资源,同步更新修改R.java文件。

(3)res:存放使用到的各种资源,如xml界面文件、图片等。

<1>res/anim/:存放定义动画的XML文件;

<2>res/xml/:在Activity中使用getResource().getXML()读取该目录下的XML资源文件;

<3>res/raw/:该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。可以调用getResources().openRawResource(ID)在应用程序中使用这些资源,参数ID形式:R.raw.somefilename。

(4)assets:在该目录下也可以存放资源文件,而这些资源文件不会在R.java中自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp。

(5)AndroidManifest.xml项目清单文件:该文件列出了应用程序所提供的功能,各种组件(如Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中进行配置,如果应用中使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),还需要在该文件中声明使用权限。

(6)default.properties:项目环境信息,一般不需要修改此文件。

3、Android中的显示单位:

(1)px(pixels)像素:

HVGA:320*480像素;

QVGA:240*320像素;

WQVGA400:240*400像素;

WQVGA432:240*432像素;

WVGA800:480*800像素;

WVGA854:480*854像素;

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

与硬件设备有关,支持WVGA、HVGA、QVGA;

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

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

(4)in(inches)英寸;

(5)mm(millimeters)毫米;

(6)pt(points)点,1/72英寸;

ps. 为了适应不同分辨率,不同像素密度,图片通常使用dip,文字通常使用sp。

4、Android界面代码:

(1)文本输入框最少显示三行文字的高度,使用属性:android:minLines="3"。

5、Android中的通知有以下几种:

(1)Toast Notification;

(2)Status Bar Notification;

(3)Dialog Notification。

6、Android中的权限(AndroidManifest.xml中添加):

(1)拨打电话:<uses-permission android:name="android.permission.CALL_PHONE"/>

(2)发送短信:<uses-permission android:name="android.permission.SEND_SMS"/>

7、拨打电话代码:

public class MainActivity extends Activity {

	private EditText mobileText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		mobileText=(EditText)findViewById(R.id.mobile);
        Button button= (Button)this.findViewById(R.id.button);
        button.setOnClickListener(new ButtonClickListener());
    }
    
    private final class ButtonClickListener implements View.OnClickListener{

		@Override
		public void onClick(View arg0) {
			String number = mobileText.getText().toString();
			Intent intent = new Intent();
			intent.setAction("android.intent.action.CALL");
			//intent.addCategory("android.intent.category.DEFAULT");
			intent.setData(Uri.parse("tel:"+number));
			startActivity(intent);//方法内部会自动为Intent添加类别:android.intent.category.DEFAULT
		}
    	
    }
}

8、发送短信代码:

public class MainActivity extends Activity {

	private EditText numberText;
	private EditText contentText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        numberText=(EditText)this.findViewById(R.id.number);
        contentText=(EditText)this.findViewById(R.id.content);
        Button button=(Button)this.findViewById(R.id.button);
        button.setOnClickListener(new ButtonClickListener());
    }

    private final class ButtonClickListener implements View.OnClickListener{
    	public void onClick(View view){
    		String number = numberText.getText().toString();
    		String content = contentText.getText().toString();
    		SmsManager manager = SmsManager.getDefault();    //取得系统默认的短信管理器对象
    		ArrayList<String> texts = manager.divideMessage(content);//将超出字数限制的短信拆分成多条短信
    		for(String text:texts){
        		manager.sendTextMessage(number,null,text,null,null);
        		/*发送短信:number:目的号码;
        		  null:默认为运营商的短信中心地址;
        		  text:短信内容;
        		  null:发送短信是否成功的状态,null为不需要得到该状态;
        		  null:对方接收短信是否成功的状态,null为不需要得到该状态;*/
    		}
    		Toast.makeText(MainActivity.this,R.string.success,Toast.LENGTH_LONG).show();
    		//MainActivity.this:在内部类中访问外部类的对象
    	}
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券