编程

当前位置:时时彩平台 > 编程 > 三、Android视图View组件

三、Android视图View组件

来源:http://www.mrmtshipyard.com 作者:时时彩平台 时间:2019-10-04 19:41

文字与图片的显示格式实际上是用Qt StyleSheet设置的与css样式中的差不多

其本质是一个带宽度的长方形,作为TextView的背景,显示效果就是TextView的边框

  • 设置边框

图片 1

图片 2是否换行.PNG

图片 3

QLabe Class参考文档

2、View常用的XML属性和相关方法
background/setBackgroundResourse(int):设置组件的背景色
clickable/setClickable(boolean):是否可以激发点击事件
fadingEdge/setVerticalFadingEdgeEnable(boolean):设置滚动该组件时组件边界是否使用淡出效果
focusable/setFocusable(boolean):设置该组件是否可以得到焦点
id/setId(int):设置该组件的标识符,Java代码可以通过getViewById获取它
keepScreenOn/setKeepScreenOn(boolean):设置该组件是否强制屏幕常亮
layout_gravity:设置组件在父容器中的对齐方式
layout_height/setLayoutParams(ViewGroup.LayoutParams params):高度
layout_width/setLayoutParams(ViewGroup.LayoutParams params):高度
layout_margin:在父容器中布局时的页边距
onClick:为该组件单击事件绑定监听器
visibility/setVisibility:设置该组件是否可见

图片 4边框.PNG图片 5❤️图片 6

布局文件xml:

  • 添加图片资源

    图片 7添加图片资源.png

  • 添加一个Labe用来显示图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">
    <Chronometer
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24pt"
        android:textColor="#ffff0000"/>
    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24pt"
        android:text="启动"/>
    <Button
        android:id="@+id/stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24pt"
        android:text="停止"/>
</LinearLayout>

图片 8边框.PNG

8、ToggleButton状态开关按钮
ToggleButotn通常用于切换程序中的某种状态,有如下属性:
checked/setChecked(boolean):设置是否被选中
textOff:按钮没有被选中时显示的文本
textOn:按钮被选中时显示的文本

  • 是否换行

10、计时器组件Chronometer
Chronometer也继承TextView,会显示一段文本,但是Chronometer不显示当前时间,显示的是从某个时间开始,一共过去了多长时间。
提供了一个属性android:format,用于设置计时器的格式,同时支持如下方法:
setBase(long base):设置起始时间
setFormat(String format):设置格式
start():开始计时
stop():停止计时
setOnChronometerTickListener(Chronometer.OnChronometerTickLister listener):绑定事件监听器,当计时器改变是触发该事件
如下是一个简单示例:

显示LOGO

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#000000"/>    <!-- 背景色  -->
    <stroke android:width="1px" android:color="#ff0000"/>   <!-- 边框  -->
</shape>

图片 9示例图片.png

5、文本框TextView
TextView直接继承了View,还是EditView、Button两个UI组件的父类,继承关系如下图3-5-1所示:

图片 10对齐方式.PNG

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- 文字带阴影的按钮 -->
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="文字带阴影的按钮"
        android:textSize="12pt"
        android:shadowColor="#aa5"
        android:shadowRadius="1"
        android:shadowDx="5"
        android:shadowDy="5"/>
    <!-- 普通文字按钮 -->
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/red"
        android:text="普通按钮"
        android:textSize="10pt"/>
    <!-- 带文字的图片按钮-->
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_selector"
        android:textSize="11px"
        android:text="带文字的图片按钮"/>
</LinearLayout>
  • 对齐方式

12、ZoomButton和ZoomControls
ZoomButton就是显示放大缩小的按钮,一般是两个一起使用
ZoomControls也是放大缩小的按钮,但是只需要定义一个,就会在屏幕上显示一对按钮,在布局文件中添加按钮之后为其绑定相应的监听器就可以使用,下面给出布局代码:

package com.example.chronometertest;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import static android.widget.Chronometer.OnChronometerTickListener;

public class MainActivity extends Activity
{
    Chronometer ch;
    Button start,stop;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 获取计时器组件
        ch = (Chronometer) findViewById(R.id.test);
        // 获取“开始”按钮
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                // 设置开始计时时间
                ch.setBase(SystemClock.elapsedRealtime());
                // 启动计时器
                ch.start();
                start.setEnabled(false);
                stop.setEnabled(true);
            }
        });
        stop = (Button) findViewById(R.id.stop);
        stop.setEnabled(false);
        stop.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                // 设置开始计时时间
                ch.setBase(SystemClock.elapsedRealtime());
                // 启动计时器
                ch.stop();
                stop.setEnabled(false);
                start.setEnabled(true);
            }
        });
        // 为Chronometer绑定事件监听器
        ch.setOnChronometerTickListener(new OnChronometerTickListener()
        {
            @Override
            public void onChronometerTick(Chronometer ch)
            {
                // 如果从开始计时到现在超过了20s
                if (SystemClock.elapsedRealtime() - ch.getBase() > 3600 * 1000)
                {
                    ch.stop();
                    start.setEnabled(true);
                    stop.setEnabled(false);
                }
            }
        });
    }
}

9、时钟AnalogClock和DigitalClock
AnalogClock继承了View组件,重写了onDraw方法,会在View上显示模拟时钟
DigitalClock继承了TextView属性,以数字显示时钟
简单用法如下所示:

1、视图和容器组件
Android的所有UI都是建立在View、ViewGroup基础之上的,它们之间的继承关系如下图3-1-1所示:

android:drawableLeft="drawable/icon"

7、RadioButton单选按钮和CheckBox复选框
它们都继承了Button,可以用Button的属性和方法,但是它们都多了一个可选中的功能,因此额为指定了android:checked属性,用于指定初始是否被选中。RadioButton只能选中一个,通常将多个RadioButton放到一个RadioGroup中使用。

3-1-1.png

package com.example.codeview;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity
{
    // 当第一次创建该Activity时回调该方法
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // 创建一个线性布局管理器
        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 View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                show.setText("Hello , Android , " + new java.util.Date());
            }
        });
    }
}

其余的"@drawable/*"为drawable目录下的图片资源

3、纯代码开发UI界面
下面以一段java代码添加组件的示例MainActivity.java:

3-5-1.png

android:background="@drawable/bg_border"

即把drawable目录下文件名icon的图片资源放到文本内容的左边

其中bg_border为drawable目录下定义的边框xml文件,示例如下:

6、Button与ImageButton组件
Button继承TextView,ImageButton继承Button,它们功能都很单一,主要是在UI界面生成一个按钮,可供用户单机,触发一个click事件。二者主要区别是:Button生成的按钮显示文字,而ImageButton则显示图片,为ImageButton指定text属性没用,可通过为ImageButton指定android:src来指定一张图片,通过android:background指定背景颜色或图片。
具体示例如下代码所示:

TextView使用较多的属性如下:
autoLink/setAutoLinkMask(int):是否设为超链接
editable:是否允许编辑
gravity/setGravity(int):设置文本框内文本对齐方式
height:高度
hint/setHint(int):设置文本框内容为空时,显示的提示文本
lines/setLines(int):设置默认占几行
minLines、maxLines:设置最少、多占几行
password:设置为一个密码框,一点代替字符
phoneNumber:该文本框只能接受电话号码
singleLine:是否为单行模式、是否换行
shadowColor:阴影颜色
shadowDx(Dy)/setShadowLayer(float,flout,flout,int):设置水平(竖直)方向的阴影
shadowRadius:阴影角度(半径)
text/setText(CharSequence):设置文本内容
textColor、textSize、textStyle等文本的属性
width/setWidth(int):设置文本框的宽度
还能设置带边框和图片的TextView

图片 11

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal">
    <!-- 定义模拟时钟 -->
    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <!-- 定义数字时钟 -->
    <DigitalClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:textColor="#f0f"
        android:format12Hour="yyyy年MM月dd日 H:mma EEEE"/>
    <!-- 定义模拟时钟,并使用自定义表盘、时针图片 -->
    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:dial="@drawable/watch"
        android:hand_minute="@drawable/hand"/>
</LinearLayout>

图 3-12-1

11、ImageView图像视图
ImageView的功能比较简单,主要就是显示图片,任何Drawable对象都可以用ImageView显示。
通过android:src/setImageResource(int)来设置显示的图片
还能通过setAlpha(int)修改透明度,取值0~255

button_selector为drawable目录下的xml资源文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 指定按钮按下时的图片 -->
    <item android:state_pressed="true"
    android:drawable="@drawable/blue"
    />
    <!-- 指定按钮松开时的图片 -->
    <item android:state_pressed="false"
    android:drawable="@drawable/purple"
    />
</selector>

显示效果如下图3-12-1所示:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10sp"
    android:layout_gravity="center_horizontal">
    <!-- 分别定义2个ZoomButton,并分别似乎用btn_minus和btn_plus图片 -->
    <ZoomButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_zoom_down"
        android:src="@android:drawable/btn_minus" />
    <ZoomButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_zoom_up"
        android:src="@android:drawable/btn_plus" />
</LinearLayout>

<ZoomControls android:id="@+id/zoomControls1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"/>

4、自定义View
当Android系统提供的UI组件不满足项目需求时,开发者可以通过继承View来派生自定义组件。首先定义一个继承View基类的子类,然后重写View类的方法,通常被重写的方法如下:
构造器
onFinishInflate():回调方法,方从XML布局文件中加载该组件并构建界面之后,该方法被回调
onDraw(Canvas):当该组件将要绘制内容时回调该方法
onTouchEvent(MotionEvent):触摸屏事件回调方法

本文由时时彩平台发布于编程,转载请注明出处:三、Android视图View组件

关键词:

上一篇:VC下字符编码转换

下一篇:没有了