• 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值。接下来可通过ViewgetTag()获取该字符串,或通过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发生变化时触发
    本博客所有文章均为原创,欢迎交流,欢迎转载;转载请勿篡改内容,并且注明出处,禁止用于商业目的,谢谢!
  • 相关阅读:
    python操作MySQL数据库
    用python监控您的window服务
    关于position定位中的几个注意点
    filter 滤镜
    git使用心得
    :after,:before,content
    outline和border
    《css揭秘》之背景与边框
    css权威指南学习笔记--第6章
    浅谈setTimeout和setInterval
  • 原文地址:https://www.cnblogs.com/wecnlove/p/4469534.html
Copyright © 2020-2023  润新知