栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

安卓的简单控件

Java 更新时间:发布时间: 百科书网 趣学号

文章目录
      • 一、文本显示
        • 1.设置文本的内容
        • 2.设置文本的大小
        • 3.设置文本的颜色
      • 二、视图基础
        • 1.设置视图的宽高
        • 2.设置视图的间距
        • 3.设置视图的对齐方式
      • 三、常用布局
        • 1.线性布局LinearLayout
        • 2.相对布局RelativeLayout
        • 3.网格布局GridLayout
        • 4.滚动视图ScrollView
      • 四、按钮触控
        • 1.按钮控件Button
        • 2.点击事件和长按事件
        • 3.禁用与恢复按钮
      • 五、图像显示
        • 1.图像视图ImageView
        • 2.图像按钮ImageButton
        • 3.同时展示文本与图像

一、文本显示 1.设置文本的内容

设置文本内容有两种方式:
在 XML 文件中通过属性 android:text 设置文本


在 Java 代码中调用文本视图对象的 setText 方法设置文本

 //根据项目工程文件会自动生成R这一个类,这个类可能包含文字还有图片
 setContentView(R.layout.activity_text_view);
 TextView tv_hello=findViewById(R.id.tv_hello);
 tv_hello.setText("你好,世界!");

也可以在value中的String.xml中设置字体,之后再在xml和java代码中引用。

你好,世界!

在XML文件中引用(@string/***)


在Java代码中引用(R.string.***)

 //根据项目工程文件会自动生成R这一个类,这个类可能包含文字还有图片
 setContentView(R.layout.activity_text_view);
 TextView tv_hello=findViewById(R.id.tv_hello);
 tv_hello.setText(R.string.hello);

2.设置文本的大小

XML中要求在字号数字后面写明单位类型,常见的字号单位主要有px,dp,sp三种。

1.px:指像素,是指基本原色素及其灰度的基本编码。
px是手机屏幕的最小显示单位,它与设备的显示屏有关。

2.dp:安卓开发时的长度单位。
dp有时也写作dip,指的是与设备无关的显示单位,它只与屏幕的尺寸有关。

对于尺寸相同的手机,即使分辨率不同,同dp的组件占用屏幕比例也相同。dp的UI效果只在相同尺寸的屏幕上相同,如果屏幕尺寸差异过大,那么需要重做DP适配,这也就是为什么平板需要单独做适配的原因。

3.sp:与缩放无关的抽象像素,是字体单位。一般情况下可认为sp=dp。

​ 它专门 用来设置字体大小。手机在系统设置里可以调整字体的大小(小、标准、大、超大)。

补充:

名称解释
px(Pixel像素)也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化,一个像素点为1px。
Resolution(分辨率)是指屏幕的垂直和水平方向的像素数量,如果分辨率是 1920*1080 ,那就是垂直方向有 1920 个像素,水平方向有 1080 个像素。
Dpi(像素密度)是指屏幕上每英寸(1英寸 = 2.54 厘米)距离中有多少个像素点。/td>
Density(密度)是指屏幕上每平方英寸(2.54 ^ 2 平方厘米)中含有的像素点数量。/td>
Dip / dp (设备独立像素)也可以叫做dp,长度单位,同一个单位在不同的设备上有不同的显示效果,具体效果根据设备的密度有关,详细的公式请看下面 。

像素之间的转换:

3.设置文本的颜色

在java里调用setTextColor方法可以设置文本颜色,color类中的颜色如下:

颜色类型说明
BLACK黑色
DKGRAY深灰
GRAY灰色
LTGRAY浅灰
WHITE白色
RED红色
GREEN绿色
BLUE蓝色
YELLOW黄色
CYAN青色
MAGENTA玫瑰红
TRANSPARENT透明

在XML文件中则通过属性android:textColor指定文本颜色

RGB三原色(红色red、绿色green、蓝色blue)

RGB色值有按八位十六进制数编码和六位十六进制数编码方式。

在八位编码中,头两位表示透明度,接下来为红色浓度,再就是绿色浓度,最后是蓝色浓度。

比如:00123456

00两位表示透明度

12两位为红色浓度

34两位为绿色浓度

56两位为蓝色浓度

全0颜色就越淡,全1颜色就越深,也就是说当首两位为FF时,表示不透明,为00则为透明,其余的类似。

注意:不透明才能看得见颜色,设置为透明,即使其他位上有颜色也显示不出来。

在java中通过setTextColor方法设置6位(即不设置头两位),是默认透明的。

在xml文件中不设置头两位,是默认不透明的。

具体在java代码和xml中引用与上面设置字的大小类似

在XML文件中引用(@color/xxx)。
在Java代码中引用(R.color.xxx)。

背景色设置也类似。

二、视图基础 1.设置视图的宽高
android:layout_width:宽度

android:layout_height:高度

宽高的取值主要有下列三种:
match_parent:表示与上级视图保持一致,继承父类的值。
wrap_content:表示与内容自适应。
以dp为单位的具体尺寸。

最后效果:

2.设置视图的间距

有两种方式,分别是使用layout_margin属性和使用padding属性,

设置视图的对齐方式。

layout_margin:指定了当前视图与周围平级视图之间的距离。也就是外间距,具体包含上下左右。

padding:指定了当前视图与内部下级视图之间的距离。也就是内间距,也包含上下左右。




    
    
        
        

    

3.设置视图的对齐方式

对齐方式也有两种途径,使用layout_gravity属性和使用gravity属性。

layout_gravity:指定了当前视图相对于父类视图的对齐方式。

gravity:指定了子类视图相对于当前视图的对齐方式。



    
    

        
        

    

    
    

        
        
    

三、常用布局 1.线性布局LinearLayout

线性布局内部有两种排列方式,分别为水平和垂直。在orientation标签有两种数学分别是horizontal和vertical。标签内如果不指定排列方式的话,默认排列方式为vertical。

horizontal:内部视图在水平方向从左往右排列。
vertical:内部视图在垂直方向从上往下排列。

线性布局的权重layout_weight,不在LinearLayout节点设置,而在线性布局的直接下级视图设置,表示该下级视图占据的宽高比例。

layout_width标签属性填0,表示水平方向的宽度比例。

layout_height标签属性填0,表示垂直方向的宽度比例。

标签layout_weight填=数字,表示在同一视图下所占的比例。




  
    
    
        
        
    

    
    
        
        
    


2.相对布局RelativeLayout

相对布局的下级视图位置由其他视图决定。定位参照物有两种:
同级视图
父级视图(也就是它归属的RelativeLayout)。如果不设置参照物,那么下级视图默认显示在RelativeLayout内的左上角。

相对布局的取值如下:

相对位置的属性取值说明
layout_toLeftOf当前视图在指定视图的左边
layout_toRightOf当前视图在指定视图的右边
layout_above当前视图在指定视图的上方
layout_below当前视图在指定视图的下方
layout_alignLeft当前视图与指定视图的左侧对齐
layout_alignRight当前视图与指定视图的右侧对齐
layout_alignTop当前视图与指定视图的顶部对齐
layout_alignBottom当前视图与指定视图的底部对齐
layout_centerInParent当前视图在上级视图中间
layout_centerHorizontal当前视图在上级视图的水平方向居中
layout_centerVertical当前视图在上级视图的垂直方向居中
layout_alignParentLeft当前视图与上级视图的左侧对齐
layout_alignParentRight当前视图与上级视图的右侧对齐
layout_alignParentTop当前视图与上级视图的顶部对齐
layout_alignParentBottom当前视图与上级视图的底部对齐



    

    

    

    

    

    

    

    

    

    

    


3.网格布局GridLayout

顾名思义,网格布局支持多行多列的表格排列,默认从左往右、从上到下排列,它有两个属性,分别是行和列:

columnCount:指定了网格的列数,即每行能放多少个视图;

rowCount:指定了网格的行数,即每列能放多少个视图;



    

    

    

    

    

    

    

    




4.滚动视图ScrollView

滚动视图也有两个属性,分别是水平和垂直的滚动视图,ScrollView和HorizontalScrollView。

采用的视图layout_width属性layout_height属性
ScrollViewmatch_parentwrap_content
HorizontalScrollViewwrap_contentmatch_parent



    
    

        
        

            

            

        

    


    
    
        
        

            

            

        

    


四、按钮触控 1.按钮控件Button

Button由TextView派生而来,Button与TextView区别如下:

区别ButtonTextView
默认背景按钮背景无背景
内部文本默认对齐方式居中对齐左对齐
默认是否将英文转大写

并且Button在TextView的基础上新增了两个属性:

textAllCaps:是否将英文字母转为大写(默认为TRUE)

onClick:接管用户的点击动作,指定了点击按钮时要触发哪个方法

public class DateUtil {
    public static String getNowTime(){
        SimpleDateFormat sdf=new 				SimpleDateFormat("HH:mm:ss");
        return sdf.format(new Date());
    }
}

public  void doClick(View view){
       String desc=String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(),((Button)view).getText());
       tv_result.setText(desc);
}


    

运行结果:

2.点击事件和长按事件

监听器,专门监听控件的动作行为。只有控件发生了指定的动作,监听器才会触发开关去执行对应的代码逻辑。所以Button中有两种常用的监听器,分别是点击监听器和长按监听器。

点击监听器:通过setOnClickListener方法设置。按钮被按住少于500毫秒时触发点击事件。

public class ButtonClickActivity extends AppCompatActivity implements  View.OnClickListener{

    private TextView tv_result1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);
       tv_result1 =findViewById(R.id.tv_result1);
        Button  btn_click_single =findViewById(R.id.btn_click_single);
        btn_click_single.setOnClickListener(new MyOnClickListener(tv_result1)) ;

        Button  btn_click_public =findViewById(R.id.btn_click_public);
        btn_click_public.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.btn_click_public){
            String desc=String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(),((Button)v).getText());
            tv_result1.setText(desc);
        }
    }

    //写成静态内部类可以防止内存泄露
    static class MyOnClickListener implements View.OnClickListener  {
        private final TextView tv_result1;

        public MyOnClickListener(TextView tv_result1) {
            this.tv_result1=tv_result1;
        }

        @Override
        public void onClick(View view) {
            String desc=String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(),((Button)view).getText());
            tv_result1.setText(desc);
        }
    }
}

对应的xml文件配置:

运行结果:

长按监听器:通过setOnLongClickListener方法设置。按钮被按住超过500毫秒时触发长按事件。

public class ButtonLongActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_long);

        Button btn_long_click = findViewById(R.id.btn_long_click);
        TextView tv_result0= findViewById(R.id.tv_result0);

        //通过匿名内部类的方式
        btn_long_click.setOnLongClickListener(v -> {
            String desc=String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(),((Button)v).getText());
            tv_result0.setText(desc);
            return false;

        });

    }
}

对应的xml配置文件:

 

运行结果:

3.禁用与恢复按钮

在实际业务开发中,按钮通常拥有两种状态,即不可用状态与可用状态,它们在外观和功能上的区别如下:

区别可用按钮不可用按钮
是否允许点击
按钮文字颜色黑色灰色

是否允许点击由enabled属性控制,true—>允许,false—>不允许

public class ButtonEnableActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_test;
    private TextView tv_res;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_enable);

        Button btn_enable = findViewById(R.id.btn_enable);

        Button btn_disable = findViewById(R.id.btn_disable);

        btn_test = findViewById(R.id.btn_test);

        tv_res = findViewById(R.id.tv_res);

        btn_enable.setOnClickListener(this);

        btn_disable.setOnClickListener(this);

        btn_test.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_enable:
                //启用当前控件
                btn_test.setEnabled(true);
                //设置按钮的文字颜色
                btn_test.setTextColor(Color.BLACK);
                break;
            case R.id.btn_disable:able:
                //禁用当前控件
                btn_test.setEnabled(false);
                //设置按钮的文字颜色
                btn_test.setTextColor(Color.GRAY);
                break;
            case R.id.btn_test:
                String desc=String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(),((Button)v).getText());
                tv_res.setText(desc);
                break;
        }
    }
}

xml配置文件如下:



    
        
        

运行结果:

五、图像显示 1.图像视图ImageView

图像视图展示的图片通常位于res/drawable目录,显示图片目前有两种方式:通过xml配置或者通过java中setImageResource方法设置。

ImageView中scaleType属性取值类型如下:

XML中的缩放类型ScaleType类中的缩放类型说明
fitXYFIT_XY拉伸图片使其正好填满视图(图片可能被拉伸变形)
fitStartFIT_START保持宽高比例,拉伸图片使其位于视图上方或左侧
fitCenterFIT_CENTER保持宽高比例,拉伸图片使其位于视图中间
fitEndFIT_END保持宽高比例,拉伸图片使其位于视图下方或右侧
centerCENTER保持图片原尺寸,并使其位于视图中间
centerCropCENTER_CROP拉伸图片使其充满视图,并位于视图中间
centerInsideCENTER_INSIDE保持宽高比例,缩小图片使之位于视图中间(只缩小不放大)

默认采用fitCenter

fitCenter和center以及centerInside看起来相似,但是这三个有很大的区别,区别如下:

属性名区别
fitCenter既允许缩小图片、也允许放大图片(可大可小)
centerInside只允许缩小图片、不允许放大图片(可小不可大)
center自始至终保持原始尺寸(不可大也不可小)

所以,当显示图片尺寸大于视图宽高,centerInside与fitCenter都会缩小图片,此时它们显示效果相同;当图片尺寸小于视图宽高,centerInside与center都保持图片大小不变,此时它俩的显示效果相同。

实现效果:

2.图像按钮ImageButton

顾名思义,ImageButton是带有图片的图像按钮,ImageButton继承ImageView而不是Button,它跟Button之前的区别如下:

区别ImageButtonButton
显示图片与文本只可图像都可
图像缩放形式可按比例缩放通过背景设置的图像会拉伸变形。
背景和前景是否可以添加图片不可

ImageButton解决有些字符打不出来,可以用图像替换的问题,比如开平方的符号等。

ImageButton和ImageView的区别如下:

区别ImageButtonImageView
是否有默认背景
默认缩放类型centerfitCenter

3.同时展示文本与图像

实现方法大致分为两种:

第一种在LinearLayout布局中对ImageView和TextView组合布局。

第二种通过按钮控件Button的drawable属性设置文本周围的图标。

Button的drawable属性如下表所示:

属性名说明
drawableTop指定文字上方的图片
drawableBottom指定文字下方的图片
drawableLeft指定文字左边的图片
drawableRight指定文字右边的图片
drawablePadding指定图片与文字的间距

xml配置文件:



        

显示效果:

参考视频资料:哔哩哔哩动脑学院安卓从入门到项目实战

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/889275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号