Andriod学习笔记(二)

news2024/9/21 23:23:25

页面设计的零碎知识

  • 通用属性
    • 设置文本大小
    • 设置视图宽高
    • 设置视图的对齐方式
  • 页面布局
    • LinearLayout
    • RelativeLayout
    • GridLayout
    • ScollView
  • 按钮触控
    • Button
    • ImageView
    • ImageButton

通用属性

设置文本大小

纯数字的setTextSize方法,内部默认字体单位为sp,sp是Android推荐的字号单位
sp专门用来设置字体大小,在系统设置中可以调整字体大小

设置视图宽高

宽高的取值主要有下列三种:

  • match_parent:表示与上级视图保持一致
  • wrap_content:表示与内容自适应
  • dp为单位的具体尺寸

在代码中设置视图宽高:

//.java文件
TextView tv_code=findViewById(R.id.tv_code);
//获取tv_code的布局参数(含高度和宽度)
ViewGroup.LayoutParams params=tv_code.getLayoutParams();
//修改布局参数中的宽度数值,注意默认为px单位
params.width=30
//调用控件对象的setLayoutParams方法,填入修改后的布局参数使之生效
tv_code.setLayoutParams(params)

设置视图的对齐方式

设置视图的对齐方式有两种途径:

  • 采用layout_gravity属性,它指定了当前视图相对于上级视图的对齐方式
  • 采用gravity属性,它指定了下级视图相对于当前视图的对齐方式

注:两个属性的取值包括:left、top、right、bottom,还可以用竖线连接各取值,例如“left|top”表示即靠左又靠上,也就是朝左上角对齐

例如:

<!--水平和竖直方向都居中-->
<TextView
	android:gravity="center"/>

页面布局

LinearLayout

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_centerParentLeft当前视图与上级视图的左侧对齐
layout_centerParentRight当前视图与上级视图的右侧对齐
layout_centerParentTop当前视图与上级视图的顶部对齐
layout_centerParentBottom当前视图与上级视图的底部对齐

GridLayout

网格布局默认从左到右、从上到下排列,它新增了两个属性(是定义在布局组件上的):

  • columnCount属性,它指定了网格的列数,即每行能放多少个视图
  • rowCount属性,它指定了网格的行数,即每列能放多少个视图

搭配layout_columnWeight属性使用,可确定每行中的所有组件在列中的宽度占比,该属性定义在子组件上。

ScollView

滚动视图有两种:

  • ScrollView,它是垂直方向的滚动视图;垂直方向滚动时,layout_width属性值设置为match_parent,layout_height属性值设置为wrap_parent
  • HorizontalScrollView,它是水平方向的滚动视图;水平方向滚动时,layout_width属性值设置为wrap_contentlayout_height属性值设置为match_parent
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="300dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal">
            <View
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:background="@color/white"/>
            <View
                android:layout_width="300dp"
                android:layout_height="match_parent"
                android:background="@color/black"/>
        </LinearLayout>
    </HorizontalScrollView>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <View
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:background="#0eeeef"/>
            <View
                android:layout_width="match_parent"
                android:layout_height="500dp"
                android:background="#0000ff"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

效果图
在这里插入图片描述

按钮触控

Button

按钮控件Button由TextView派生而来,它们之间的区别有:

  • Button拥有默认的按钮背景,而TextView默认无背景
  • Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐
  • Button会默认将英文字母转为大写,而TextView保持原始的英文大小写

注:Button取消字母全部大写:android:textAllCaps="false"

按钮控件有两种常用的监听器:

  • 点击监听器,通过setOnClickListener方法设置。按钮被按住少于500毫秒时,会触发点击事件。
  • 长按监听器,通过setOnLongClickListener方法设置。按钮被按住超过500毫秒时,会触发长按事件。

几种常用的为Button控件设置点击事件的方式

//1.使用匿名内部类的方式设置点击事件 不占用内存
btn_click_single.setOnClickListener(new View.OnClickListener(){
	@Override
	public void onClick(View view){
		//......
	}
})

//2.静态内部类写法 易造成内存泄露
Button btn_click_single=findViewById(R.id.btn_click_single);
btn_click_single.setOnClickListener(new MyOnClickListener());
static class MyOnClickListener implements View.OnclickListener{
	@Override
	public void onClick(View v){
		//.......
	}
}

//3.Activity实现OnClickListener接口的方式设置点击事件 
btn_click_single.setOnClickListener(this);
@Override
public void onClick(View v){
	if(v.getId()==R.id.btn_click_single){
		//...
	}
	//或者
	switch (v.getId()){
		case R.id.btn_click_single:
			//......
			break;
			
	}
}

//4.lambda表达式
btn_click_single.setOnClickListener(v->{
	//......
	return ture;//返回true表示允许冒泡 false表示禁止冒泡
})
//长按事件:只需要把setOnClickListener换为setOnLongClickListener

禁用与恢复按钮
是否允许点击由enabled属性控制,属性值为true时表示允许点击,为false时表示不允许点击

ImageView

ImageView继承自View类,它的功能用于显示图片,或者显示Drawable对象。
图像视图展示的图片通常位于res/drawable***目录,设置图像视图的显示图片有两种方式:

  • 在XML文件中,通过属性android:src设置图片资源,属性值格式形如“@drawable/不含扩展名的图片名称”
  • 在Java代码中,调用setImageResource方法设置图片资源,方法参数格式形如“R.drawable.不含扩展名的图片名称”

ImageView本身默认图片居中(fitCenter),若要改变图片的显示方式,可通过scaleType属性设定(在Java代码中是setScaleType)该属性的取值说明如下:

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

ImageButton

ImageButton是显示图片的图像按钮,但它继承自ImageView,而非继承Button。
ImageButton和Button之间的区别有:

  • Button即可显示文本也可显示图片,ImageButton只能显示图片不能显示文本。
  • ImageButton上的图像可按比例缩放,而Button通过背景设置的图像会拉伸变形。
  • Button只能靠背景显示一张图片,而ImageButton可分别在前景和背景显示图片,从而实现两张图片叠加的效果。

在某些场合,有的字符无法由输入法打出来,或者某些文字以特殊字体展示,就适合先切图再放到ImageButton。
ImageButton和ImageView的区别有:

  • ImageButton有默认的按钮背景,ImageView默认无背景。
  • ImageButton默认的缩放类型为center,而ImageView默认的缩放类型为fitCenter。

同时展现文本和图像
(1)利用LinearLayout对ImageView和TextView组合布局。
(2)通过按钮控件Button的drawable***属性设置文本周围的图标。

  • drawableTop:指定文字上方的图片
  • drawableBottom:指定文字下方的图片
  • drawableLeft:指定文字左边的图片
  • drawableRight:指定文字右边的图片
  • drawablePadding:指定图片与文字的间距

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git报错解决

本篇主要汇总在使用 Git 进行提交和拉取文件时&#xff0c;遇到的问题的解决方案&#xff0c;以便下次查找。 1 关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案 1. 问题描述 在使用 git 拉取、提交代码的时候&#xff…

Access,Trunk,Hybrid的一些接触知识以及实验

VLAN基本配置 一、实验目的 1.掌握VLAN基础配置原理&#xff1b; 2.掌握Access接口工作原理及配置&#xff1b; 3.掌握Trunk接口工作原理及配置&#xff1b; 4.掌握Hybrid接口工作原理及配置。 二、实验设备 1.电脑1台&#xff1b; 2.ENSP仿真软件。 三、实验内容及步骤 VLAN( …

Ps:选择主体

“主体”之所以成为主体&#xff0c;因为它是一张图片中最突出或者最应该被关注的区域。 选择主体 Select Subject是 Photoshop 2018 年 1 月版开始增加的命令。Adobe 持续改良此命令的算法&#xff0c;现在不仅具有内容识别功能&#xff0c;而且对毛发区域的处理方式也有大幅改…

周阳老师学习

分布式事务 2、3pc tcc 可靠消息最终一致性 最大努力通知 总结 1&#xff09;最大努力通知VS 可靠消息最终一致性 向上管理 态度 》 能力 沟通 》 抱怨 大局 》 细节 汇报进度 寻求知道 成长答疑 先完成后完美 分布式事务-独立消息服务MQ 追溯业务执行状态的接口…

解决谷歌学术bib信息不全的问题

在我们撰写学术论文时&#xff0c;经常需要引用参考文献。如果用latex撰写论文&#xff0c;势必会用到文献的bib信息&#xff0c;大部分的教程都会告诉我们去google scholar上去搜索。 一、问题描述 搜索一篇文章&#xff0c;然后选择cite&#xff0c;再选择bib。 很明显&…

最详细STM32,cubeMX串口发送,接收数据

这篇文章将详细介绍 串口 发送数据&#xff0c;接受数据。 文章目录 前言一、串口的基础知识二、cubeMX 配置三、自动生成代码解析四、串口发送数据函数五、使用串口收发数据点亮 led重定向函数&#xff1a; 总结 前言 实验开发板&#xff1a;STM32F103C8T6。所需软件&#xf…

c语言用json解析库(jansson)检测字符串是否是json格式的数据

C语言检测字符串是否是json格式的数据&#xff0c;可以用jansson库检测&#xff0c;也可以用cjson库来校验。但是若数据格式有问题&#xff0c;jansson可以指出哪里有错误&#xff0c;cjson无法指出。 下面就演示C语言如何使用jansson库检测字符串是否是json格式的数据。 1.下载…

pow函数

pow函数 pow的翻译是指数表达式 第一个参数为底数&#xff0c;第二个参数为指数 返回值为&#xff1a; 头文件为include <math.h> #include <stdio.h> #include <math.h>int main() {int ret (int)pow(10, 2);printf("%d\n", ret);return 0; }…

算法、语言混编、分布式锁与分布式ID、IO模型

一、算法初识 数据结构和算法是程序的基石。我们使用的所有数据类型就是一种数据结构&#xff08;数据的组织形式&#xff09;&#xff0c;写的程序逻辑就是算法。 算法是指用来操作数据、解决程序问题的一组方法。 对于同一个问题&#xff0c;使用不同的算法&#xff0c;也…

C++笔记之初始化二维矩阵的方法

C笔记之初始化二维矩阵的方法 —— 2023年5月20日 上海 code review! 文章目录 C笔记之初始化二维矩阵的方法一.常见方法1. 使用数组2. 使用向量3. 使用数组的动态分配4. 使用嵌套的 std::vector 并使用resize方法5. 初始化固定大小的 std::array 二.C中使用vector初始化二维矩…

Python基础入门例程3-NP3 读入字符串

描述 小白正在学习Python&#xff0c;从变量输出开始。请使用input函数读入一个字符串&#xff0c;然后将其输出。 输入描述&#xff1a; 输入一行字符串。 输出描述&#xff1a; 将读入的变量输出。 示例1 输入&#xff1a; Nowcoder 复制输出&#xff1a; Nowcoder…

本周技术概要20231016-20231022与生活点滴

本周包了饺子&#xff0c;辣椒油整的也不错&#xff0c;不过包饺子上升的空间还很大。 饺子美照&#xff1a; 一、linux下Qt treeView内存泄漏 当把原来Qt程序由ubuntu 32位的程序迁移到ubuntu 64位时&#xff0c;测试程序发现了内存泄漏问题&#xff0c;经过排查&#xff0c;最…

java版opencv之Javacv各种场景使用案例

文章目录 1.关于Javacv~~2. [官网下载最新OpenCV4.8](https://opencv.org/releases/)&#xff0c;并解压~~ *不一定要安装opencv*~~3. 将opencv的jar包及动态库dll文件引入项目~~4.pom引入javacv库5.测试5.1 图片美颜5.2 图片人脸检测5.3 提取视频中的语音5.4 音视频剪辑5.5 录…

Python基础入门例程2-NP2 多行输出

描述 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 输入描述&#xff1a; 无 输出描述&#xff1a; 第一行输出字符串Hello World!&a…

N——>BatchSize 数据维度理解和处理(chun, cat, squeeze, unsqueeze)

数据处理之N——>BatchSize N——>batch_size train_data TensorDataset(torch.Tensor(x_train).double(), torch.Tensor(y_train).double()) train_loader DataLoader(train_data, batch_sizeargs.bs, shuffleTrue, drop_lastTrue) for batch_idx, (inputs, results…

计算机网络第二章习题_物理层

1.用香农公式计算一下,假定信道带宽为为3100Hz,最大信道传输速率为35Kb/s ,那么若想使最大信道传输速率增加60%,问信噪比S/N应增大到多少倍?如果在刚才计算出的基础上将信噪比S/N再增大到十倍&#xff0c;问最大信息速率能否再增加20%? 问题刨析: (1)香农公式是什么? 带宽受…

css伪类元素使用技巧 表达input父级聚焦css实现

:focus-within 可以让它自己被聚焦或者它的后代元素被聚焦input 中有required 加星号在这里插入图片描述

TCP--拥塞控制

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家来访。 TCP中另一个重要的点就是拥塞控制&#xff0c;TCP是无私的当它感受到网络拥堵了&#xff0c;就…

【计算机网络】IP协议的相关特性

IP协议&#xff1a;互联网的核心组件 在当今高度数字化的世界中&#xff0c;互联网已成为人们生活、工作不可或缺的一部分。而在这个庞大的网络中&#xff0c;IP协议&#xff08;Internet Protocol&#xff09;作为核心的通信协议&#xff0c;发挥着至关重要的作用。本文将详细…

ES6有何新特性?

目录 介绍 let 和 const 解构 模板字符串 箭头函数 Set Map 介绍 ES 全称是ECMAScript&#xff0c;它是JavaScript基础构建的一种语言&#xff0c;JavaScript正是建立在ECMAScript语言的基础规范中建立使用的。ES6实际上是一个泛指&#xff0c;泛指ES2015及后续的版本…