Android基础学习__第1天__美好的开始


1.安卓体系结构



2.模拟器的创建方法

    点击手机形状的图形(android virtual device manager) 创建一个新的android模拟器

    Android模拟器无法启动:
    错误提示为:
        invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.Hint: use '@foo' to launch a virtual device named 'foo'.please use -help for more information
        解决方法: 
        1. 你的安装路径中有中文,那么就重新安装SDK,放在全英文路径下
        2. 添加Android_SDK_HOME 环境变量,从变量名上看最好把ANDROID_SDK_HOME指向Android SDK目录,然后启动AVD
    Android模拟器无法保存数据:
    原因:电脑意外重启,或者模拟器非法关闭.
        正常情况下,当模拟器被开启后,在x:\Documents and Settings\Administrator\.android\avd\xxx.avd的目录下会产生cache.img.lock, hardware-qemu.ini.lock,  sdcard.img.lock, userdata-qemu.img.lock这样的文件夹,用来标记当前模拟器设备已经开启,当模拟器设备关闭的时候 会自动删除这些文件夹.
        如果电脑意外重启或者模拟器被非法关闭. 这几个文件夹是不会被自动删除的. 系统任务android模拟器还处于打开状态. 新开启的模拟器就无法保存数据了.
        解决方法:删除这些.lock的文件夹


3.Android SDK目录结构

    src/ java原代码存放目录
    gen/ 自动生成目录

        gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
    res/ 资源(Resource)目录
        在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。
    libs/ 支持库目录
        程序开发时需要的一些三方的jar包可以放在这个目录,系统会自动把里面的jar包,添加到环境变量。
    assets资源目录
        Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp
    AndroidManifest.xml 项目清单文件
        这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。
    project.properties 项目环境信息,一般是不需要修改此文件


4.常用adb命令

    adb devices    列出所有的设备
    adb shell 挂载到linux的空间 
    adb install xxx.apk 如果有多个设备,我们可以指定设备   adb install –s  emulator-5554 D:/xxx.apk
    emulator –avd advname  启动模拟器    例如:emulator –avd 2.2 (2.2 为我们创建设备的名称)
    mkmdcard 20m d:/sdcard.img 创建sdcard
    adb pull <remote> <local> 
    adb push <local> <remote>
    android create avd –name android2.2 –target 8  创建模拟器
    ctrl + F11 横竖屏的切换 


5.点击事件的4种写法

    a.写一个类继承OnClickListener覆写onClick方法。
    b.运用匿名内部类的方法直接创建OnClickListener的子类对象覆写onClick方法。
    c.直接使用当前类继承OnClickListener接口,覆写onClick方法。如:

public void onClick(View V)
{
	switch(V.getId())
	{
		case:R.id.bt_dail
			callPhone();
			break;
		defult:
			break;
	}
}

    d.在布局文件里面绑定一个 点击方法.来调用MainActivity中的方法/.(通过反射的方式.如果方法存在的话就会执行,如果不存在的话就会产生异常)


6.拨打电话与发送短信关键代码

    拨打电话

    注意在清单文件AndroidManifest.xml添加拨打电话服务权限

//定义意图
Intent intent = new Intent();
//指定打电话事件
intent.setAction(Intent.ACTION_CALL);
//Uri统一资源定位符
intent.setData(Uri.parse("tel:"+number));
//跳转至打电话页面
startActivity(intent);

    发送短信

    注意在清单文件 AndroidManifest.xml 添加发送短信服务权限

//导包

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<String> messages = smsManager.divideMessage(content);
			//循环发送
			for(String message : messages){
				smsManager.sendTextMessage(number, null, message, null, null);
			}
			Toast.makeText(this, "发送成功", Toast.LENGTH_LONG).show();
		}
	}
}

7.常见布局

    相对布局(RelativeLayout)

    一个控件的位置它决定于它和其他控件的关系,好处:比较灵活;缺点:掌握比较复杂。

// 相对于给定ID控件
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_below 将该b控件的顶部置于a控件之下;
android:layout_toLeftOf    将该控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf  将该b控件的左边缘与a的控件右边缘对齐;
android:layout_alignBaseline  将该控件的baseline与给定ID的baseline对齐;
android:layout_alignTop        将该控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom   将该控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft        将该控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight      将该控件的右边缘与给定ID的右边缘对齐;


// 相对于父组件

android:layout_alignParentTop      如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
android:layout_alignParentLeft      如果为true,将该控件的左部与其父控件的左部对齐;
android:layout_alignParentRight    如果为true,将该控件的右部与其父控件的右部对齐;


// 居中

android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical     如果为true,将该控件的置于垂直居中;
android:layout_centerInParent   如果为true,将该控件的置于父控件的中央;

    线性布局(LinearLayout)

    它将控件组织在一个垂直或水平的形式。当布局方向设置为垂直时,它里面的所有子控件被组织在同一列中;当布局方向设置为水平时,所有子控件被组织在一行中。



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Up" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Left" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Right" />

    </LinearLayout>

</LinearLayout>

    表格布局(TableLayout)

    TableLayout由所表格布局采用行列的形式来管理UI组件,TableLayout不需要明确声明包含多少行和列,而是通过添加TableRow,其他组件来控制表格的行列的。
    向表格中添加TableRow和其他组件,该表格就增加一行,该组件占有一行。
    表格的单元格常用三种属性:
        Shrinkable:某列宽度可以被收缩,以保证适应父容器的宽度
        Stretchable:某列宽度可以被拉伸,适应父容器的空间
        Collapsed:该列的所有单元格会隐藏



<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns: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="姓名:" />

        <EditText
            android:layout_width="200dip"
            android:layout_height="wrap_content" />
    </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="年龄:" />

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content" />
    </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="籍贯:" />

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content" />
    </TableRow>

</TableLayout>

    绝对布局(AbsoluteLayout)

    绝对布局是以坐标的方式来定位控件在屏幕上位置。我们通常不推荐使用AbsoluteLayout,除非有正当理由使用它,因为它会使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

    定义控件位置关键代码:

        android:layout_x="219dp"
        android:layout_y="385dp"

    帧布局(FrameLayout)

    帧里的控件叠加,播放器的暂停界面可以用此布局实现

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:visibility="visible"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="文本01" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="文本02" />

</FrameLayout>

8.Android布局单位

    dp: 物理尺寸和屏幕像素的比例值
    dip:和dp一样
    px: 屏幕的像素点,受屏幕分辨率影响
    sp:主要用在文字上


    dp和px 的区别:
        px是像素.无论屏幕多大.就是多大.
        dp是比值.是根据屏幕的大小来变化

   sp是文字的缩放.这样缩放的时候文字不会出现锯齿。开发中一般都用dp这样就可以再不同像素的手机来显示了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值