安卓学习笔记18:常用控件 - 按钮、图像视图和图像按钮
文章目录
- 零、学习目标
- 一、按钮控件
- 1、继承关系图
- 2、常用属性
- 二、图像视图
- 1、继承关系图
- 2、常用属性
- 三、图像按钮
- 1、继承关系图
- 2、常用属性
- 四、教学案例 - 通过按钮缩放图片
- (一)运行效果
- (二)应用关键点
- (1)获得图像尺寸
- (2)设置图像尺寸
- (三)实现步骤
- 1、创建安卓应用【ZoomImageByButton】
- 2、将两张图片拷贝到drawable目录
- 3、主布局资源文件activity_main.xml
- 4、字符串资源文件strings.xml
- 5、主界面类MainActivity
- 6、启动应用,查看效果
- 五、课后作业
- 任务:切换缩放图片(泸职院掠影)
零、学习目标
- 了解按钮常用属性并能进行事件处理
- 了解图像视图常用属性并能进行事件处理
- 了解图像按钮常用属性并能进行事件处理
一、按钮控件
1、继承关系图
2、常用属性
- text:文本内容
- textSize:文本尺寸
- textColor:文本颜色
- onClick:单击事件(用于绑定事件处理方法)
二、图像视图
1、继承关系图
2、常用属性
- src:源(用于设置图片源)
- background:背景(用于设置背景图片)
- scaleType:缩放类型()
- tint(蒙版)
三、图像按钮
1、继承关系图
2、常用属性
- src:源(用于设置图片源)
- background:背景(用于设置背景图片)
四、教学案例 - 通过按钮缩放图片
(一)运行效果
(二)应用关键点
- 如何设置图像的尺寸?不能像以前设置标签字体属性那样:
控件名.set属性名(属性值);
必须通过布局参数类(LayoutParams
)来实现。
(1)获得图像尺寸
通过图像视图对象的getLayoutParams()
方法得到布局参数对象,然后再利用布局参数对象提供的width
与height
属性即可获得图像的尺寸。
imageWidth = ivBear.getLayoutParams().width;
imageHeight = ivBear.getLayoutParams().height;
(2)设置图像尺寸
通过图像视图对象的setLayoutParams()
方法来设置,必须要传入一个布局参数对象,而该布局参数对象初始化时传入新的图像尺寸。
ivBear.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));
(三)实现步骤
1、创建安卓应用【ZoomImageByButton】
2、将两张图片拷贝到drawable目录
3、主布局资源文件activity_main.xml
<?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:gravity="center_horizontal"android:padding="10dp"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center" ><Buttonandroid:id="@+id/btnMinus"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doMinus"android:text="@string/minus" /><Buttonandroid:id="@+id/btnPlus"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doPlus"android:text="@string/plus" /><ImageButtonandroid:id="@+id/btnExit"android:layout_width="40dp"android:layout_height="40dp"android:onClick="doExit"android:background="@drawable/exit" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:id="@+id/ivBear"android:layout_width="200dp"android:layout_height="300dp"android:src="@drawable/bear" /></LinearLayout></LinearLayout>
4、字符串资源文件strings.xml
<resources><string name="app_name">通过按钮缩放图片</string><string name="minus">缩小图片</string><string name="plus">放大图片</string>
</resources>
5、主界面类MainActivity
package net.hw.zoom_image;import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private ImageView ivBear; // 图像控件private double imageWidth; // 图像宽度private double imageHeight; // 图像高度private double screenWidth; // 屏幕宽度private double screenHeight; // 屏幕高度private double zoomScale = 0.95; // 缩放比例@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识符获得控件实例ivBear = findViewById(R.id.ivBear);// 获得屏幕尺寸screenWidth = getWindowManager().getDefaultDisplay().getWidth();screenHeight = getWindowManager().getDefaultDisplay().getHeight();// 获得图像尺寸imageWidth = ivBear.getLayoutParams().width;imageHeight = ivBear.getLayoutParams().height;}/*** 缩小图片单击事件处理方法** @param view*/public void doMinus(View view) {// 获得图像新尺寸int newWidth = (int) (imageWidth * zoomScale);int newHeight = (int) (imageHeight * zoomScale);// 按新尺寸设置图像(不能缩小为零,否则不能再放大)if (newWidth > 50) {ivBear.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));// 重新获取图像尺寸imageWidth = ivBear.getLayoutParams().width;imageHeight = ivBear.getLayoutParams().height;} else {Toast.makeText(this, "温馨提示:图片不能再缩小,要不然看不见咯!", Toast.LENGTH_LONG).show();}}/*** 放大图片单击事件处理方法** @param view*/public void doPlus(View view) {// 获得图像新尺寸int newWidth = (int) (imageWidth / zoomScale);int newHeight = (int) (imageHeight / zoomScale);// 按新尺寸设置图像(不能再放大,否则就出界了)if (ivBear.getLayoutParams().width < screenWidth) {ivBear.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));// 重新获取图像尺寸imageWidth = ivBear.getLayoutParams().width;imageHeight = ivBear.getLayoutParams().height;} else {Toast.makeText(this, "温馨提示:图片不能再放大,要不然就出界咯!", Toast.LENGTH_LONG).show();}}/*** 退出应用程序** @param view*/public void doExit(View view) {finish();}
}
6、启动应用,查看效果
五、课后作业
任务:切换缩放图片(泸职院掠影)
- 切换图片(通过普通按钮或者手势滑动)
- 缩放图片(通过缩放按钮ZoomControls来实现)
安卓学习笔记18:常用控件 - 按钮、图像视图和图像按钮相关推荐
- Qt学习笔记之常用控件QlistWidget
一.QListWidget Class The QListWidget class provides an item-based list widget. More... Header: #inclu ...
- 【MFC】学习笔记:常用控件之组合框(Combo Box)
01.目录 目录 01.目录 02.控件介绍 03.控件的消息通知函数 04.创建组合框控件及成员函数介绍 4.1 组合框的创建 4.2 CComboBox类的主要成员函数 05.应用实例 06.总结 ...
- Qt学习笔记之常用控件QTreeWidget
一.QTreeWidget Class The QTreeWidget class provides a tree view that uses a predefined tree model. Mo ...
- JavaFX 学习笔记——窗口与控件
前言 如今比较流行的桌面gui框架有WPF.WinForm.Qt.javafx等.其中WPF和WinForm目前还只能在运行Winsows上.Qt(widget)是一个很强大的跨平台C++框架(不只是 ...
- VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)
上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...
- 安卓基础学习 Day 6|常用控件---列表视图+古诗查看
目录 列表视图4要素 四种是适配器 古诗查看 古诗列表 1.主布局资源文件 2.诗歌列表项模板 3.字符串资源文件 4.主界面代码 5.启动应用.查看效果 古诗内容模板 1.内容模板的主布局资源文件 ...
- vs2010 学习Silverlight学习笔记(7):控件样式与模板
概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...
- vb.net listview 删除选定行_VBA学习笔记59-1: listview控件
学习资源:<Excel VBA从入门到进阶>第59集 by兰色幻想 本节学习Listview控件,它可以用多种视图方式显示项目的控件.由于其外形美观而且非常实用,所以使用频率很高. Lis ...
- ASP.NET 学习笔记_01 广告控件的使用
广告控件的使用: 广告文件是一个XML文件,广告文件中所有的标签属性被分析后放到adProperties字典中,用以属性编辑. ads.xml 1 <?xml version="1.0 ...
最新文章
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置填充色调色板、brewer调色板、灰度比例)实战
- R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性
- OpenCV 开闭运算
- mqadmin命令运行出错
- python计算蛋白质的质量
- Linux进程间通信——使用消息队列
- 蓝桥杯 省赛 python_第十一届蓝桥杯软件省级大赛第二场python3,类省赛,Python3
- 系统级芯片设计语言和验证语言的发展
- 赛码网刷题记录acmcoder
- 招银网络科技java春招二面_招银网络科技 2019春招笔试题复盘
- 论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning
- 基于微信小程序的健身小助手小程序
- @Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig详解
- 基于原生JS写的异形轮播图--效果如网易云、QQ音乐播放器中轮播图
- NGINX 0 DAY LDAP RCE 漏洞来龙去脉
- 搜索引擎排名的因素-1
- 概率论的几种常考分布总结
- Spark 安装部署与快速上手
- 联想850服务器维护手册,联想ThinkSystem SN850服务器评测
- 浅析Post和Get