文章目录

  • 零、学习目标
  • 一、按钮控件
    • 1、继承关系图
    • 2、常用属性
  • 二、图像视图
    • 1、继承关系图
    • 2、常用属性
  • 三、图像按钮
    • 1、继承关系图
    • 2、常用属性
  • 四、教学案例 - 通过按钮缩放图片
    • (一)运行效果
    • (二)应用关键点
      • (1)获得图像尺寸
      • (2)设置图像尺寸
    • (三)实现步骤
      • 1、创建安卓应用【ZoomImageByButton】
      • 2、将两张图片拷贝到drawable目录
      • 3、主布局资源文件activity_main.xml
      • 4、字符串资源文件strings.xml
      • 5、主界面类MainActivity
      • 6、启动应用,查看效果
  • 五、课后作业
    • 任务:切换缩放图片(泸职院掠影)

零、学习目标

  1. 了解按钮常用属性并能进行事件处理
  2. 了解图像视图常用属性并能进行事件处理
  3. 了解图像按钮常用属性并能进行事件处理

一、按钮控件

1、继承关系图

2、常用属性

  • text:文本内容
  • textSize:文本尺寸
  • textColor:文本颜色
  • onClick:单击事件(用于绑定事件处理方法)

二、图像视图

1、继承关系图

2、常用属性

  • src:源(用于设置图片源)
  • background:背景(用于设置背景图片)
  • scaleType:缩放类型()
  • tint(蒙版)

三、图像按钮

1、继承关系图

2、常用属性

  • src:源(用于设置图片源)
  • background:背景(用于设置背景图片)

四、教学案例 - 通过按钮缩放图片

(一)运行效果

(二)应用关键点

  • 如何设置图像的尺寸?不能像以前设置标签字体属性那样:控件名.set属性名(属性值); 必须通过布局参数类(LayoutParams)来实现。

(1)获得图像尺寸

通过图像视图对象的getLayoutParams()方法得到布局参数对象,然后再利用布局参数对象提供的widthheight属性即可获得图像的尺寸。

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:常用控件 - 按钮、图像视图和图像按钮相关推荐

  1. Qt学习笔记之常用控件QlistWidget

    一.QListWidget Class The QListWidget class provides an item-based list widget. More... Header: #inclu ...

  2. 【MFC】学习笔记:常用控件之组合框(Combo Box)

    01.目录 目录 01.目录 02.控件介绍 03.控件的消息通知函数 04.创建组合框控件及成员函数介绍 4.1 组合框的创建 4.2 CComboBox类的主要成员函数 05.应用实例 06.总结 ...

  3. Qt学习笔记之常用控件QTreeWidget

    一.QTreeWidget Class The QTreeWidget class provides a tree view that uses a predefined tree model. Mo ...

  4. JavaFX 学习笔记——窗口与控件

    前言 如今比较流行的桌面gui框架有WPF.WinForm.Qt.javafx等.其中WPF和WinForm目前还只能在运行Winsows上.Qt(widget)是一个很强大的跨平台C++框架(不只是 ...

  5. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  6. 安卓基础学习 Day 6|常用控件---列表视图+古诗查看

    目录 列表视图4要素 四种是适配器 古诗查看 古诗列表 1.主布局资源文件 2.诗歌列表项模板 3.字符串资源文件 4.主界面代码 5.启动应用.查看效果 古诗内容模板 1.内容模板的主布局资源文件 ...

  7. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  8. vb.net listview 删除选定行_VBA学习笔记59-1: listview控件

    学习资源:<Excel VBA从入门到进阶>第59集 by兰色幻想 本节学习Listview控件,它可以用多种视图方式显示项目的控件.由于其外形美观而且非常实用,所以使用频率很高. Lis ...

  9. ASP.NET 学习笔记_01 广告控件的使用

    广告控件的使用: 广告文件是一个XML文件,广告文件中所有的标签属性被分析后放到adProperties字典中,用以属性编辑. ads.xml 1 <?xml version="1.0 ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置填充色调色板、brewer调色板、灰度比例)实战
  2. R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性
  3. OpenCV 开闭运算
  4. mqadmin命令运行出错
  5. python计算蛋白质的质量
  6. Linux进程间通信——使用消息队列
  7. 蓝桥杯 省赛 python_第十一届蓝桥杯软件省级大赛第二场python3,类省赛,Python3
  8. 系统级芯片设计语言和验证语言的发展
  9. 赛码网刷题记录acmcoder
  10. 招银网络科技java春招二面_招银网络科技 2019春招笔试题复盘
  11. 论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning
  12. 基于微信小程序的健身小助手小程序
  13. @Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig详解
  14. 基于原生JS写的异形轮播图--效果如网易云、QQ音乐播放器中轮播图
  15. NGINX 0 DAY LDAP RCE 漏洞来龙去脉
  16. 搜索引擎排名的因素-1
  17. 概率论的几种常考分布总结
  18. Spark 安装部署与快速上手
  19. 联想850服务器维护手册,联想ThinkSystem SN850服务器评测
  20. 浅析Post和Get

热门文章

  1. 直播带货时画质总是太差,你的视频转码方案可能要换了
  2. 【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
  3. 一图读懂基于鲲鹏处理器的全栈混合云华为云Stack6.5
  4. 红橙Darren视频笔记 仿酷狗侧滑效果
  5. Android 高斯模糊demo
  6. 产生信号的代码10分类
  7. 组合学讲义 李乔(2ed)-习题1.1-6组合恒等式题解
  8. LeetCode-144:二叉树的前序遍历
  9. dubbo分布式系统链路追踪_zipkin
  10. 事务没提交的数据查的出来吗?_品牛栏山,论分布式事务