android常用布局与点击事件、安卓体系结构

1.安卓体系结构(重要)

  1. Android是一个完整的操作系统,包含了中间件,同样的,包含了一些关键的应用程序
  2. Library: 函数库
  3. 如果觉得更高端一些,变成五层,Android Runtime
  4. App Framework: 应用框架层
  5. Android 有四层架构 ,第一层应用层,第二层,应用框架层,第三层,函数库,第四层,Linux内核
    这里写图片描述

2.DVM和JVM的区别
1. 编译文件格式不同 JVM: .java —> .class —-> .jar DVM : .java —->.class —-> .dex
2. 基于架构不同 : JVM: 基于栈的架构 DVM: 基于寄存器的架构

3.ADB常用指令(练习一下)
1. adb kill-server 杀死adb服务 (练习一下)
2. adb start-server 开启adb服务 (练习一下)
3. adb devices 显示已经连接的设备 (练习一下)
4. adb install xxx.apk 安装一个APK到设备上
5. adb connect 192.168.1.12 (在同一网段下)
6. adb shell 挂载到linux空间下。
7. adb pull : 把文件放到指定文件夹里(练习一下)
8. adb push : 把指定文件放到模拟器里。(练习一下)

4.四种点击事件(重要)
第一种

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //我要把布局填充进去
        setContentView(R.layout.activity_main);
        //获取拨打按钮
        Button btn_call;
        btn_call =  (Button) findViewById(R.id.btn_call);
        //增加他的点击事件
        btn_call.setOnClickListener(new call());


    }

    public class call implements OnClickListener
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //获取到Edittext
            EditText et_number ; 
            et_number = (EditText) findViewById(R.id.et_number);
            //获取et_number里的内容
            String number = et_number.getText().toString().trim();
            //Intent : 意图 
            //Action : 动作 
            //DATA : 数据
            //获取intent对象
            Intent intent = new Intent();
            //添加意图的动作
            intent.setAction(Intent.ACTION_CALL);
            //添加意图的数据
            //url: 统一资源标识符  uri: 统一资源定位符
            intent.setData(Uri.parse("tel:"+number));
            //实现这个意图
            startActivity(intent);


        }

    }
第二种
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //我要把布局填充进去
        setContentView(R.layout.activity_main);
        //获取拨打按钮
        Button btn_call;
        btn_call =  (Button) findViewById(R.id.btn_call);
        //增加他的点击事件
        btn_call.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                call();
            }
        });


    }


    public void call()
    {
        // TODO Auto-generated method stub
                    //获取到Edittext
                    EditText et_number ; 
                    et_number = (EditText) findViewById(R.id.et_number);
                    //获取et_number里的内容
                    String number = et_number.getText().toString().trim();
                    //Intent : 意图 
                    //Action : 动作 
                    //DATA : 数据
                    //获取intent对象
                    Intent intent = new Intent();
                    //添加意图的动作
                    intent.setAction(Intent.ACTION_CALL);
                    //添加意图的数据
                    //url: 统一资源标识符  uri: 统一资源定位符
                    intent.setData(Uri.parse("tel:"+number));
                    //实现这个意图
                    startActivity(intent);
    }
第三种
public class MainActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 我要把布局填充进去
        setContentView(R.layout.activity_main);
        // 获取拨打按钮
        Button btn_call;
        btn_call = (Button) findViewById(R.id.btn_call);
        // 增加他的点击事件
        // 注册点击事件
        btn_call.setOnClickListener(this);

    }

    public void call() {
        // TODO Auto-generated method stub
        // 获取到Edittext
        EditText et_number;
        et_number = (EditText) findViewById(R.id.et_number);
        // 获取et_number里的内容
        String number = et_number.getText().toString().trim();
        // Intent : 意图
        // Action : 动作
        // DATA : 数据
        // 获取intent对象
        Intent intent = new Intent();
        // 添加意图的动作
        intent.setAction(Intent.ACTION_CALL);
        // 添加意图的数据
        // url: 统一资源标识符 uri: 统一资源定位符
        intent.setData(Uri.parse("tel:" + number));
        // 实现这个意图
        startActivity(intent);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_call:
            call();
            break;

        default:
            break;
        }

    }

}
第四种
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 我要把布局填充进去
        setContentView(R.layout.activity_main);
        // 获取拨打按钮
        Button btn_call;
        btn_call = (Button) findViewById(R.id.btn_call);
        // 增加他的点击事件
        // 注册点击事件

    }

    public void cell(View v) {
        // TODO Auto-generated method stub
        // 获取到Edittext
        EditText et_number;
        et_number = (EditText) findViewById(R.id.et_number);
        // 获取et_number里的内容
        String number = et_number.getText().toString().trim();
        // Intent : 意图
        // Action : 动作
        // DATA : 数据
        // 获取intent对象
        Intent intent = new Intent();
        // 添加意图的动作
        intent.setAction(Intent.ACTION_CALL);
        // 添加意图的数据
        // url: 统一资源标识符 uri: 统一资源定位符
        intent.setData(Uri.parse("tel:" + number));
        // 实现这个意图

        startActivity(intent);
    }
}
    <Button
        android:id="@+id/btn_call"
        android:onClick="cell"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/et_number"
        android:text="拨打" />

5.五大布局
LinearLayout 线性布局
RelativeLayout 相对布局
AbsoluteLayout 绝对布局
TableLayout 表格布局
FrameLayout 帧布局

LinearLayout    线性布局

android:orientation=”horizontal”
制定线性布局的排列方式
水平 horizontal
垂直 vertical
gravity 控制当前控件内容显示区域
layout_gravity 当前控件在父元素的位置
Layout_weightSum
Layout_weight 额外空间分配(权重)

android:visibility=”invisible”
控制布局是否显示
显示 visible
不显示,但占空间 invisible
隐藏 gone

RelativeLayout 相对布局

android:layout_toRightOf 在指定控件的右边
android:layout_toLeftOf 在指定控件的左边
android:layout_above 在指定控件的上边
android:layout_below 在指定控件的下边
android:layout_alignBaseline 跟指定控件水平对齐
android:layout_alignLeft 跟指定控件左对齐
android:layout_alignRight 跟指定控件右对齐
android:layout_alignTop 跟指定控件顶部对齐
android:layout_alignBottom 跟指定控件底部对齐
android:layout_alignParentLeft 是否跟父布局左对齐
android:layout_alignParentTop 是否跟父布局顶部对齐
android:layout_alignParentRight 是否跟父布局右对齐
android:layout_alignParentBottom 是否跟父布局底部对齐
android:layout_centerVertical 在父布局中垂直居中
android:layout_centerHorizontal 在父布局中水平居中
android:layout_centerInParent 在父布局中居中

AbsoluteLayout 绝对布局/FrameLayout 帧布局

AbsoluteLayout
android:layout_x 指定控件在父布局的x轴坐标
android:layout_y 指定控件在父布局的y轴坐标

FrameLayout
帧布局每次添加的控件都显示在最上面,最后显示在界面上的是最后添加的一个控件

TableLayout 表格布局

android:shrinkColumns 收缩列
android:stretchColumns 拉伸列
android:collapseColumns 隐藏列
android:layout_column 指定列(作用在列的身上)
android:layout_span 合并列(作用在列的身上)

TableRow单元行里的单元格的宽度小于默认的宽度时就不起作用,其默认是fill_parent,高度可以自定义大小

6.Android中的显示单位
1.px (pixels)像素
一般HVGA代表320x480像素,这个用的比较多。
2.dip或dp (device independent pixels)设备独立像素
这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
3.sp (scaled pixels — best for text size)比例像素
主要处理字体的大小,可以根据用户系统的字体自适应。

除了上面三个显示单位,下面还有几个不太常用:
in (inches)英寸
mm (millimeters)毫米
pt (points)点,1/72英寸

为了适应不同分辨率,不同的像素密度,推荐使用dip ,文字使用sp。
1. DIP : 概念, === DP 无论使用多大的屏幕 都会按比例的去放置
2. PX : 像素 无论使用多大的屏幕,都会按他自己的像素值去摆放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值