Android基础布局2

来源:互联网 发布:mac qq企业邮箱设置 编辑:程序博客网 时间:2024/05/22 20:17

Android的布局管理

布局的作用

视图容器组件负责管理其子控件在屏幕中显示的位置和大小

 

 

LinearLayout:线性布局

所有的控件都按照线性排列,有两个方向:水平方向、竖直方向

几个需要注意的属性

layout_gravity:指控件自身相对于父容器的位置

gravity: 是指控件内部的内容相对于控件的边缘所处的位置

layout_weight:是指控件所占空间的比重

 

FrameLayout:框架布局

也叫层布局和帧布局,控件自动显示在父容器的左上角,后面的覆盖前面的。类似于Photoshop的图层。

添加id属性以便编程使用,方便在类中引用此对象,

比如: android:id="@+id/tv5"     @+id/名字   是让系统自动你所起的这个名字创建ID号。

属性margin是外边缘的边距,padding是内填充距离

 

RelativeLayout:相对布局

每个控件的位置是由其他控件或容器的相对位置决定的。这个布局是应用最广泛的。

将部分布局代码放在另外一个单独文件中,然后在使用的时候引用

布局之间可以使用<include layout="@layout/linearlayoutdemo" />包含不同的布局文件。

 

TableLayout:表格布局

使用TableRow表示一行,每个控件都是一列内容,表格布局最大的特点是列对齐。

 

AbsoluteLayout:绝对布局

使用绝对坐标来决定控件的显示位置,它不能灵活地适配各种屏幕,已经不推荐使用了。

 

GridLayout:网格布局

GridLayout是Android4.0新增加的网格布局管理器,类似于HTML中的table标签,每个控件都是一个单元格。

使用android:layout_gravity=“fill“   扩展组件

 

引用其他布局

使用<include layout="@layout/其他布局文件名" />

将两个或两个以上的布局组合起来。

 


如何去掉状态栏和标题栏,即全屏显示

如果直接继承自Activity类,则

    requestWindowFeature(Window.FEATURE_NO_TITLE);  //去标题栏

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去状态栏

    setContentView(R.layout.mylayout);

如果使用V7兼容包时,则

   supportRequestWindowFeature(Window.FEATURE_NO_TITLE);  //去标题栏

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.relativelayoutdemo2);

选图片作为界面背景:

1.图片的尺寸要合适。

2.背景图片与文字要有明显的对比。

3.长宽比例要协调。

 

 

 

Activity生命周期

Android没有入口方法,只有生命周期方法。Activity有7个生命周期方法。(可以结合图示来研究)

它是与用户交互的对象。

 

Activity的状态

Running

处于可见并且可交互的激活状态,即前端运行状态。

Paused

被另一个透明或者Dialog样式的Activity覆盖时的状态,是指部分遮挡。

Stopped

被另一个Activity覆盖、失去焦点并不可见状态,完全不可见。

killed

被系统杀死回收或者没有被启动时的状态

 

 

七个生命周期方法:

 

     protected void onCreate(Bundle savedInstanceState);

 

     protected void onStart();

     

     protected void onRestart();

 

     protected void onResume();

 

     protected void onPause();

 

     protected void onStop();

 

     protected void onDestroy();

 

Log调试

 Logcat通过android.util.Log类的静态方法来查找错误和打印系统日志消息。它是一个进行日志输出的API,我们在android程序中可以随时为某一对象插入一个Log,然后在DDMS中观察Logcat的输出是否正常。Android.util.Log常用的方法有以下5个:

Log.v

Log.d

Log.i

Log.w

Log.e

        分别对应VERBOSE\DEBUG\INFO\WARN\ERROR,当进行调试时,他们的区别并不大,只是显示颜色不同,可以控制要显示的某一类错误。

 

 

 

Android的事件响应

什么是事件监听器?

Android系统是以事件为驱动的,某种事件可以激活某段程序的执行。

事件监听器是一个实现了某种监听接口的类的对象

监听接口通常会在相关类的内部定义

给某个控件安装事件监听器,它就有了事件响应的能力

 

创建一个新的模块:

Android Studio里面一个模块相当于Eclipse中的一个项目,它是独立运行一个单独的App。

创建新的Activity对象步骤:

1.创建布局文件

2.创建Activity类

3.重写onCreate方法

4.在onCreate方法中调用setContentView将布局加载

若想让此Activity成为启动界面:

1.在AndroidManifest.xml中注册此Activity类

2.在Activity标签中加上以下代码:

 

写一个新的Actitivy类,需要在Manifest文件中注册(Android的四大组件都要求注册才能使用)

        <activity android:name=".PageOne">

            <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

以上代码可以保障此Activity是一个启动界面

 

事件监听器的实现方式

按钮的点击事件接口是View.OnClickListener

1.外部类实现事件监听器

2.内部类实现事件监听器

3.本类(Activity)实现事件监听器

4.匿名内部类对象实现事件监听器


另一种的事件处理(控件的onClick属性指定事件处理方法)

控件的onClick属性来指定事件处理的方法

Activity中创建这个方法

如果有多个控件都使用这个属性,并且都使用同一个事件处理方法

传入的View对象可以调用view.getId()使用ID号区分各控件

 

页面的跳转

引言:Android的三大组件(Activity、Service和BroadcastReceiver)之间调用需要一个Intent对象。Intent对象就是意图,告诉Android系统,我要如何操作。它可以用来传递信息,起到一个信使的作用。

页面的跳转需要建立第二个页面。

带数据的页面跳转,将第一页面中的数据在跳转的过程中由Intent对象携带到第二页面。

 

创建第二个页面

1.创建布局文件。

2.创建Activity类,在onCreate方法中加载布局文件。

3.在Manifest配置文件中注册Activity类。

 

携带数据的页面跳转

1)由Intent对象携带数据,传递给启动界面。

 

                Intent intent = new Intent(this,PageTwo.class);

                //携带数据的页面跳转

                //获取数据

                String name = txt1.getText().toString();

                String pwd = txt2.getText().toString();

                //装载数据

                intent.putExtra("username",name);

                intent.putExtra("password",pwd);

 

                startActivity(intent);

 

2)在第二页面中可以直接获取Intent对象,通过这个对象,取出数据。

 

        Intent intent = getIntent();

        String name = intent.getStringExtra("username");

        String pwd = intent.getStringExtra("password");

 

        displayView.setText("您好!"+name+"\n您的密码是:"+pwd);

0 0