自定义温度显示控件(四) — 终结篇

这篇具有很好参考价值的文章主要介绍了自定义温度显示控件(四) — 终结篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

详细讲述自定义温度控件的实现

详细

前言

在之前的文章中,已经讲到了自定义温度显示控件一步步进化的历程,大家有兴趣的话可参考以下文章:
自定义温度显示控件(一)

自定义温度显示控件(二)

自定义温度显示控件(三)

今天讲温度实现效果的最终篇。
涉及到以下内容:

  1. 实现涉及主体类
  2. MultiRollNumberMainActivity中使用
  3. 效果图和项目结构图
    效果图

    自定义温度显示控件(四) — 终结篇,移动技术,javascript,开发语言,ecmascript

一. 实现涉及主体类

自定义温度控件的实现依然依靠两个类:RollNumberMultiRollNumber。其中涉及到的资源类attrs.xml代码如下:

 

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="RollNumber">
            <attr name="TempInt" format="dimension"/>
            <attr name="TempFloat" format="dimension"/>
            <attr name="TempDegreeStoken" format="dimension"/>
            <attr name="TempDegreeRadius" format="dimension"/>
            <attr name="TempDegreeSpace" format="dimension"/>
            <attr name="TempPointRadius" format="dimension"/>
            <attr name="TempWordOffsetY" format="dimension"/>
        </declare-styleable>
        <declare-styleable name="MultiScrollNumber">
            <attr name="primary_number" format="integer"/>
            <attr name="target_number" format="integer"/>
            <attr name="number_size" format="integer"/>
        </declare-styleable>
    </resources>

dimens.xml代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="temp_integer_size">30dp</dimen>
        <dimen name="temp_degree_stoken_size">1.5dp</dimen>
        <dimen name="temp_degree_radius_size">2dp</dimen>
        <dimen name="temp_degree_space_size">1.5dp</dimen>
        <dimen name="temp_point_radius_size">1.5dp</dimen>
        <dimen name="temp_word_offset_y">5dp</dimen>
    </resources>

strings.xml代码如下:

    <resources>
        <string name="temp_hi">Hi</string>
        <string name="temp_lo">Lo</string>
        <string name="temp_off">OFF</string>
    </resources>
二. MultiRollNumber 在 MainActivity 中使用

下面先给出MainActivity对应布局activity_main.xml代码:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <TextView
            android:id="@+id/tv_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="@dimen/dp_70"/>
        <Button
            android:id="@+id/btn_test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试1"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_text"
            android:layout_marginTop="@dimen/dp_20"/>
        <Button
            android:id="@+id/btn_test2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试n"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/btn_test"
            android:layout_marginTop="@dimen/dp_20"/>
        <com.pain.testdemo.function.MultiRollNumber
            android:id="@+id/multi_scroll_number"
            android:layout_width="@dimen/dp_120"
            android:layout_height="@dimen/dp_40"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/btn_test2"
            android:layout_marginTop="@dimen/dp_20"/>
    </androidx.constraintlayout.widget.ConstraintLayout>

MultiRollNumberMainActivity中使用示例如下:

    package com.pain.testdemo;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import com.pain.testdemo.function.MultiRollNumber;
    import com.pain.testdemo.util.MyUtil;
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
        private TextView mTv;
        private Button mBtn;
        private Button mBtn2;
        private MultiRollNumber multiRollNumber;
        private float mLastNumber;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            MyUtil.i("=======onCreate======");
            initView();
            initData();
            setListener();
        }
        private void initView() {
            mTv = findViewById(R.id.tv_text);
            mBtn = findViewById(R.id.btn_test);
            mBtn2 = findViewById(R.id.btn_test2);
            multiRollNumber = findViewById(R.id.multi_scroll_number);
        }
        private void initData() {
            multiRollNumber.setRange(15.5f,28.5f);
            multiRollNumber.initNumber(17f);
        }
        private void setListener() {
            mBtn.setOnClickListener(this);
            mBtn2.setOnClickListener(this);
        }
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_test:
                    MyUtil.i("=======test======");
                    //获取滚动结束的值
                    mLastNumber=multiRollNumber.getTargetNumber();
                    //设置从lastNumber滚动到number
                    multiRollNumber.setTargetNumber(mLastNumber,16f);
                    mLastNumber=multiRollNumber.getTargetNumber();
                    MyUtil.toast("最后值为:"+mLastNumber,MainActivity.this);
                    break;
                case R.id.btn_test2:
                    MyUtil.i("=======test2=====");
                    //获取滚动结束的值
                    mLastNumber=multiRollNumber.getTargetNumber();
                    multiRollNumber.setTargetNumber(mLastNumber,20.5f);
                    mLastNumber=multiRollNumber.getTargetNumber();
                    MyUtil.toast("滚动后值为:"+mLastNumber,MainActivity.this);
                    break;
                default:
                    break;
            }
        }
    }
三. 效果图和项目结构图

自定义温度显示控件(四) — 终结篇,移动技术,javascript,开发语言,ecmascript

自定义温度显示控件(四) — 终结篇,移动技术,javascript,开发语言,ecmascript

ok,关于自定义温度控件的知识就介绍到这里了,谢谢大家。文章来源地址https://www.toymoban.com/news/detail-675679.html

到了这里,关于自定义温度显示控件(四) — 终结篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF必须掌握的技能之自定义控件——实战:自制上传文件显示进度按钮

    自定义控件在WPF开发中是很常见的,有时候某些控件需要契合业务或者美化统一样式,这时候就需要对控件做出一些改造。 目录 按钮设置圆角 按钮上传文件相关定义 测试代码 话不多说直接看效果 默认效果: 上传效果: 按钮设置圆角 因为按钮本身没有 CornerRadius 属性,所以只

    2024年02月08日
    浏览(68)
  • WFP必须掌握的技能之自定义控件——实战:自制上传文件显示进度按钮

    自定义控件在WPF开发中是很常见的,有时候某些控件需要契合业务或者美化统一样式,这时候就需要对控件做出一些改造。 目录 按钮设置圆角 按钮上传文件相关定义 测试代码 话不多说直接看效果 默认效果: 上传效果: 按钮设置圆角 因为按钮本身没有 CornerRadius 属性,所以只

    2024年02月08日
    浏览(43)
  • [visionOS][Apple Vision Pro][SwiftUI] 定义一个UIImage变量,可动态改变,并显示在Image控件

    实际上,不需要加.onChange也可以的,这个只是响应myImage变化,跟Image更新图片没关系。 用@State标记一个属性时,SwitfUI会自动监听这个属性的变更,当这个属性发生改变,SwiftUI 会自动重新计算绘制视图。

    2024年02月16日
    浏览(46)
  • JavaScript 温度异常图表

    了解如何使用高性能 JS 图表创建可用于异常天气和温度科学研究的 JS 温度异常图表。 你好! 在本文中,我们将创建温度异常图表。 对于这个例子,我们将使用 LightningCharts JS 库,特别是 XY 图表。对于那些对技术细节感兴趣的人,这里有一些 XY 图表的  特征: 这种类型的图

    2024年02月08日
    浏览(30)
  • 【TB作品】MSP430单片机 Proteus仿真 DS18B20温度 LCD1602显示器 温度读取与显示

    效果图如下: 首先,让我们先来说说DS18B20集成电路。 • DS18B20是一款采用OneWire通讯协议的集成电路,因此只需要一条线就可以与微控制器通讯。它不需要额外的电源,但是也有外部电源输入端口。 • OneWire设备具有64位的ROM代码。如我们之前所说,这64位的前8位是家族代码,中间

    2024年02月08日
    浏览(65)
  • [HTML]Web前端开发技术2(HTML5、CSS3、JavaScript )格式化文本标记,定义列表,<blockquote>,definition description,ruby——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 格式化文字与段落 Web页面设计原则 向Web页面添加文字信息 格式化文本标记 标题字标记 添加空格与特

    2024年02月05日
    浏览(94)
  • 51单片机DS18B20温度传感器使用及数码管温度计、LCD1602温度显示代码详解

    温馨提示:读者若要彻底理解并会灵活使用DS18B20温度传感器,请详细阅读中文手册,并且对照代码注释充分分析代码。请不要觉得中文手册内容繁多!如能静心分析,定能深有体会,获益匪浅! 主函数操作顺序(执行序列) 功能指令 最后希望我的分享对你有所帮助!敬请关

    2024年02月12日
    浏览(50)
  • Qt(C++)绘制指针仪表盘显示当前温度

    当前文章要实现的功能: 使用Qt绘制一个仪表盘,用来显示当前的温度,绘制刻度、绘制数字、绘制温度指针。仪表盘全程使用QPainter进行绘制,QPainter是Qt框架中非常重要的一个类,绘制功能的实现离不开它。如果想要使用Qt进行高质量的绘图或UI设计,必须掌握QPainter的使用

    2024年02月07日
    浏览(41)
  • 通过stm32读取max6675的温度值并在显示屏上显示

    芯片:STM32F103c8 通信方式:spi MAX6675是一复杂的单片热电偶数字转换器,内部具有信号调节放大器、12位的模拟/数字化热电偶转换器、冷端补偿传感和校正、数字控制器、1个SPI兼容接口和1个相关的逻辑控制。                                                          

    2024年01月17日
    浏览(37)
  • 基于51单片机的超声波测距及温度显示

    (仿真+程序+PCB+原理图+设计报告) 功能介绍 具体功能: 1.超声波测距传感器HC-SR04、温度传感器DS18B20将检测的数据传给51单片机; 2.LCD1602实时显示测得的距离和温度; 3.按键可以设置距离的上下限; 4.距离超过设定范围,蜂鸣器+LED产生声光报警; ​演示视频: 基于5

    2024年04月24日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包