zoukankan      html  css  js  c++  java
  • 界面编程与视图(View)组件

    1、视图组件与容器组件

    Android应用绝大部分UI组件都放在Android.widget包及其子包、android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白的矩形区域。

    View类还有一个重要的子类:ViewGroup,它通常作为其他组件的容器使用。ViewGroup除了包含普通view组件外,还可包含ViewGroup组件。

    所有组件都提供了两种方式来控制组件的行为:

    a、在XML布局文件中通过XML属性进行控制。

    b、在JAVA程序代码中通过调用方法进行控制。

    提示:Drawable是Android提供的一个抽象基类,它代表了“可以被绘制出来的某种东西”,Drawable包括了大量子类,各种Drawable可用于定制UI组件的背景等外观。

    ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。这两个内部类中都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性。指定子组件的布局高度和宽度分别是android:layout_height、Android:layout_width。其属性值有三个

    fill_parent:指定子组件的高度、宽度与父容器的高度、宽度相同。

    match_parent:与fill_parent相同。

    wrap_content:指定子组件的大小恰好能包裹它的内容即可。

    ViewGroup.MarginLayoutParams用于控制子组件周围的页边距(也就是组件四周的留白)。

    2、使用XML布局文件控制UI界面

    当我们在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后(R.java会自动收录该布局资源),java代码可通过如下方法在activity中显示该视图:

    setContentView(R.layout.<资源文件名字>)

    可以为UI组件指定android:id属性,该属性值代表该组件的唯一标识。在java代码中访问该组件:

    findViewById(R.id.<android.id属性值>);

    一旦在程序中获得了指定UI组件之后,就可以通过代码来控制各UI组件的外观行为,包括为UI组件绑定事件监听器等。

    3、在代码中控制UI界面

    如果希望在代码中控制UI界面,那么所有的UI组件都将通过new关键字创建出来,然后以合适的方式“搭建”在一起即可。

    代码:

    a、在布局文件中定义一个简单的线性布局容器

    <?xml version="1.0" encoding="utf-8"?>

    <!--定义一个线性布局容器-->

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:id="@+id/root"

        android:orientation="vertical"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent">

    b、下面在程序中获取该线性布局容器,并往该容器中添加组件。

    public class MixView extends Activity

    {

    //定义一个访问图片的数组

    int[] images = new int[]{R.drawable.java,R.drawable.ee,R.drawable.classic,R.drawable.ajax,R.drawable.xml,};

    };

    int currentImg = 0;

    public void onCreate(Bundle savedInstancestate)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //获取LinearLayout

        LinearLayout main =(LinearLayout)findViewById(R.id.root);

        //程序创建ImageView组件

        final ImageView image = new ImageView(this);

        //将ImageView组件添加到LinearLayout布局容器中

        main.addView(image);

        //初始化时显示第一张图片

        image.setImageResource(images[0]);

        image.setOnClickListener(new OnClickListener()

        {

             @Override

             public void onClick(View v)

             {

                    //改变ImageView里面显示的图片

                    image.setImageResource(images[++currentImg%images.length]);

             }

        });

    }

    }

    4、使用XML布局文件和Java代码混合控制UI界面。

    习惯上把变化小、行为比较固定的组件放在XML布局文件中管理,而那些变化多、行为控制复杂的组件则交给java代码来管理。

    5、开发自定义的view组件

    当开发者打算派生出自己的UI组件时,首先定义一个继承View基类的子类,然后重写View类的一个或多个方法,通常可以被用户重写的方法如下:

  • 相关阅读:
    3-剑指Offer: 连续子数组的最大和
    2-剑指offer: 最小的K个数
    1-剑指offer: 数组中出现次数超过一半的数字
    django中运行定时任务脚本
    django+sqlite进行web开发(二)
    django+sqlite3进行web开发(一)
    TL-WDN5200H无线usb网卡在Linux上的使用
    比较好用的C++11在线编译器
    MarkDown中如何加入上标和下标
    3. 卷积神经网络(CNN)
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5601909.html
Copyright © 2011-2022 走看看