02_Android应用界面编程_01_视图(View)组件

1、视图组件与容器组件

Android绝大部分UI组件都放在android.widget和android.view包及其子包,所有的UI组件都继承了View类,ViewGroup则用于其他组件的容器。


XML属性


相关方法


说明

android:alpha setAlpha(float) 设置该组件的透明度
android:background setBackgroundResource(int) 设置该组件的背景颜色
android:clickable setClickable(boolean) 设置该组件是否可以激发单击事件
android:contentDescription setContentDescription(CharSequence) 设置该组件的主要描述信息
android:drawingCacheQuality setDrawingCacheQuality(iint) 设置该组件所使用的绘制缓存的质量
android:fadeScrollbars setScrollbarFadingEnabled(boolean) 当不使用该组件的滚动条时,是否淡出显示滚动条
android:fadingEdge setVerticalFadingEdgeEnabled(boolean) 设置滚动该组件时组件边界是否使用淡出效果
android:fadingEdgeLength getVerticalFadingEdgeLength() 设置淡出边界的长度
android:focusable setFocusable(boolean) 设置组件是否可以得到焦点
android:focusableInTouchMode setFocusableInTouchMode(boolean) 设置该组件在触摸模式下是否可以得到焦点
android:id setId(int) 设置该组件的唯一标识。Java代码中可以通过findViewById来获取它
android:isScrollContainer setScrollContainer(boolean) 设置该组件是否作为可滚动容器使用
android:keepScreenOn setKeepScreenOn(boolean) 设置该组件是否会强制手机屏幕一直打开
android:longClickable setLongClickable(boolean) 设置该组件是否可以响应长单击事件
android:minHeight setMinimumHeight(int) 设置该组件的最小高度
android:minWidth setMinimumWidtht(int) 设置该组件的最小宽度
android:nextFocusDown SetNextFocusDownId(int) 设置焦点在该组件上,且按向下键时获得焦点的组件ID
android:nextFocusLeft setNextFocusLeftId(int) 设置焦点在该组件上,且按向左键时获得焦点的组件ID
android:nextFocusRight setNextFocusRightId(int) 设置焦点在该组件上,且按向右键时获得焦点的组件ID
android:nextFocusUp setNextFocusUpId(int) 设置焦点在该组件上,且按向上键时获得焦点的组件ID
android:onClick   为该组件的单击事件绑定监听器
android:padding setPadding(int,int,int,int) 在组件的四边设置填充区域
android:paddingLeft setPadding(int,int,int,int) 在组件的左边设置填充区域
android:paddingTop setPadding(int,int,int,int) 在组件的上边设置填充区域
android:paddingRight setPadding(int,int,int,int) 在组件的右边设置填充区域
android:paddingBottom setPadding(int,int,int,int) 在组件的下边设置填充区域
android:rotation setRotation(float) 设置该组件旋转的角度
android:rotationX setRotationX(float) 设置该组件绕X轴旋转的角度
android:rotationY setRotationY(float) 设置该组件绕Y轴旋转的角度
android:saveEnabled setSaveEnabled(boolean) 如果设置为false,那当该组件被冻结时不会保存它的状态
android:scaleX setScaleX(float) 设置该组件在水平方向的缩放比
android:scaleY setScaleY(float) 设置该组件在垂直方向的缩放比
android:scrollX   该组件初始化后的水平滚动偏移
android:scrollY   该组件初始化后的垂直滚动偏移
android:scrollbarAlwaysDrawHorizontalTrack   设置该组件是否总是显示水平滚动条的轨迹
android:scrollbarAlwaysDrawVerticalTrack   设置该组件是否总是显示垂直滚动条的轨迹
android:scrollbarDefaultDelayBeforeFade setScrollbarDefaultDelayBeforeFade(int) 设置滚动条在淡出隐藏之前延迟多少毫秒
android:scrollbarFadeDuration setScrollbarFadeDuration(int) 设置滚动条淡出隐藏过程需要多少秒
android:scrollbarSize setScrollbarSize(int) 设置垂直滚动条的宽度和水平滚动条的高度
android:scrollbarStyle setScrollbarStyle(int) 设置滚动条的风格和位置。该属性支持如下属性: insideOverlay insideInset OutsideOverlay OutsideInset
android:scrollbarThumbHorizontal   设置该组件的水平滚动条的滑块对应的Drawable对象
android:scrollbarThumbVertical   设置该组件的垂直滚动条的滑块对应的Drawable对象
android:scrollbarTrackHorizontal   设置该组件的水平滚动条的轨道对应的Drawable对象
android:scrollbarTrackVertical   设置该组件的垂直滚动条的轨道对应的Drawable对象
android:scrollbars   定义该组件滚动时显示几个滚动条,该属性支持如下属性值。 none:不显示滚动条 horizont:显示水平滚动条 vertical:显示垂直滚动条
android:soundEffectsEnabled setSoundEffectsEnabled(boolean) 设置该组件被单击时是否使用音效

android:tag

  为该组件设置一个字符串类型的tag值。接下来可通过View的getTag()获取该字符串,或通过findViewWithTag()查找该组件
android:transformPivotX setPivotX(float) 设置该组件旋转时旋转中心的X坐标
android:transformPivotY setPivotY(float) 设置该组件旋转时旋转中心的Y坐标
android:translationX setTranslationX(float) 设置该组件在X方向上位移
android:translationY setTranslationY(float) 设置该组件在Y方向上位移
android: visibility setVisibility(int) 设置该组件是否可见

*Drawable是Android提供的一个抽象类,包含了大量的子类,可以定制UI组件的背景等外观。

ViewGroup为一个抽象类,实际上通过他的子类来作为容器,例如各种布局容器,其通过ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类来控制期子组件的分布。

ViewGroup.LayoutParams两个属性

XML属性


说明


android:layout_height

指定该子组件的布局高度
android:layout_width 指定该子组件的布局宽度

他们都支持下面三个属性值:fill_parent、match_parent、wrap_content

ViewGroup.MarginLayoutParams支持的属性


XML属性


方法


说明

android:layout_marginButton setMargins(int,int,int,int) 指定该子组件下边的页边距
android:layout_marginLeft    
android:layout_marginRight    
android:layout_marginTop    

 

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

java代码在Activity中显示视图:

setContentView(R.layout.<资源文件id>);

java代码中访问UI组件:

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

3、在代码中控制Ui界面

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.main);
        // 创建一个线性布局管理器
        LinearLayout layout = new LinearLayout(this);
        // 设置该Activity显示layout
        super.setContentView(layout);
        layout.setOrientation(LinearLayout.VERTICAL);
        // 创建一个TextView
        final TextView show = new TextView(this);
        // 创建一个按钮
        Button bn = new Button(this);
        bn.setText("OK");
        bn.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
        //向layout容器中添加TextView
        layout.addView(show);
        //向Layout中添加按钮
        layout.addView(bn);
        //为按钮绑定一个事件监听器
        bn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                show.setText("单击成功");
            }
        });
    }

上面的this是一个Context对象,他代表访问Android应用环境的全局信息的API。他本身是一个抽象类,Activity、Service都继承了Context。

4、一般结合XMl布局和代码混合控制UI界面

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

5、开发自定义的View

当Android系统提供的Ui组件不足以满足项目需求是,我们可以通过继承View来派生自定义组件。

首先定义一个继承View基类的子类,然后重写View类的一个或多个方法。

  • 构造器:View被实例化或者被加载并构建界面时将需要调用构造器
  • onFinishInflate() 当View中所有的子控件均被映射成xml后触发
  • onMeasure(int, int) 确定所有子元素的大小
  • onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发
  • onSizeChanged(int, int, int, int) 当view的大小发生变化时触发
  • onDraw(Canvas) view渲染内容的细节
  • onKeyDown(int, KeyEvent) 有按键按下后触发
  • onKeyUp(int, KeyEvent) 有按键按下后弹起时触发
  • onTrackballEvent(MotionEvent) 轨迹球事件
  • onTouchEvent(MotionEvent) 触屏事件
  • onFocusChanged(boolean, int, Rect) 当View获取或失去焦点时触发
  • onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发
  • onAttachedToWindow() 当view被附着到一个窗口时触发
  • onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和  onAttachedToWindow() 是相反的。
  • onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发
时间: 2024-08-05 14:57:42

02_Android应用界面编程_01_视图(View)组件的相关文章

关于Android界面编程与视图(View)组件

UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在视图(View)组件.容器(ViewGroup)组件基础之上的. UI组件继承之View组件 ViewGroup----------->作为其他组件的容器使用. ViewGroup包含View组件即 (UI组件---->继承自View组件. ViewGroup组件---->继承自View组件

界面编程与视图(View)组件

1.视图组件与容器组件 Android应用绝大部分UI组件都放在Android.widget包及其子包.android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白的矩形区域. View类还有一个重要的子类:ViewGroup,它通常作为其他组件的容器使用.ViewGroup除了包含普通view组件外,还可包含ViewGroup组件. 所有组件都提供了两种方式来控制组件的行为: a.在XML布局文件中通过XML属性进行控制. b.在JAVA程序代码中通过调用方

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

Java Swing界面编程(19)---密码输入组件:JPasswordField

JTextField是使用明文方式进行数据显示的,如果现在需要将回显的内容设置成其他字符,则可以使用JPasswordField类. package com.beyole.util; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; public class test18 { public static void main(String[] args) { JFrame

Java Swing界面编程(6)---JButton按钮组件

package com.beyole.util; import java.awt.Font; import javax.swing.JButton; import javax.swing.JFrame; public class test5 { public static void main(String[] args) { JFrame frame=new JFrame(); JButton button=new JButton("Click Me!");//new出一个按钮的对象

二、Android应用的界面编程(一)界面编程与视图(View)组件

Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类.它代表一个空白的矩形区域.View类还有一个重要的子类:ViewGroup,但ViewGroup通常作为其他组件的容器使用.Android的所有UI都是建立在View.ViewGroup基础之上的,因此ViewGroup也可以被当成View使用.ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGro

part11-2 Python图形界面编程(Tkinter常用组件、对话框(Dialog)、菜单、Canvas绘图)

五. Tkinter 常用组件 Tkinter 各组件的详细用法还需要掌握,也就是掌握各个“积木块”的的详细功能. 1. 使用 ttk 组件 在前面直接使用的 tkinter 模块下的 GUI 组件看上去并不美观.为此 Tkinter 引了一个 ttk 组件作为补充,并使用功能更强大的 Combobox 取代原来的 Listbox,且新增了 LabeledScale(带标签的Scale).Notebook(多文档窗口).Progressbar(进度条).Treeview(树)等组件. ttk 是

Android界面编程——Android布局组件(二)

Android界面编程 2.3.1 布局介绍 布局用于定义Activity中UI元素的排列结构,Android提供了LinearLayout线性布局.RelativeLayout相对布局 .FrameLayout帧布局 .TableLayout表格布局.AbsoluteLayout坐标布局 共五种布局,可以通过两种方式声明布局: ? 在 XML 中声明 UI 元素.Android 提供了对应于 View 类及其子类的XML 元素 ? 运行时实例化布局元素.可以通过编程创建 View 对象和 Vi

Android界面编程——日期时间组件(五)

Android界面编程--日期时间组件 2.6日期时间组件 2.6.1 TextClock 以文本的方式显示系统日期和时间,可以自定义显示格式,是 Android4.2(对应API Level 17)提供的新特性. TextClock有两种格式设置方式: 1. 在24小时模式: 属性:android:format24Hour 方法:set Format24Hour(CharSequence) 2. 在12小时模式: 属性:android: format12Hour 方法:set Format12