android基础控件(2)

android基础控件(2)TabLayout+ViewPager实现选项卡 2.1 activity_main <?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" xmlns:app="http://schemas.androi 阅读详情

1、progressBar

progressBar ,进度条,是一个显示进度的控件。

public class MainActivity extends AppCompatActivity {

    private ProgressBar mCirclrBar;
    private ProgressBar mRecBar;
    private Button mStart;
    private int count;
    private final int GUI_STOP_NOTIFIER = 100;
    private final int GUI_THREADING_NOTIFIER = 50;


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


        initView();

        mStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mRecBar.setVisibility(View.VISIBLE);
                mCirclrBar.setVisibility(View.VISIBLE);

                //设置最大值
                mCirclrBar.setMax(100);
                mRecBar.setMax(100);

                //设置当前值
                mCirclrBar.setProgress(0);
                mRecBar.setProgress(0);
                mRecBar.setSecondaryProgress(0);

                //通过线程改变ProgressBar的值
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for(int i = 0; i < 10; i++) {
                            try {
                                count = (i + 1) * 10;

                                Thread.sleep(100);

                                if(i == 9) {
                                    //发送消息,中断线程
                                    Message m = new Message();
                                    m.what = GUI_STOP_NOTIFIER;
                                    MainActivity.this.myHandler.sendEmptyMessage(m.what);
                                }
                                else {
                                    Message m = new Message();
                                    m.what = GUI_THREADING_NOTIFIER;
                                    MainActivity.this.myHandler.sendEmptyMessage(m.what);
                                }

                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
            }
        });
    }

    Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case GUI_STOP_NOTIFIER:
                    //完成进度,隐藏ProgressBar
                    mCirclrBar.setVisibility(View.GONE);
                    mRecBar.setVisibility(View.GONE);
                    Thread.currentThread().interrupt();
                    break;

                case GUI_THREADING_NOTIFIER:
                    if(!Thread.currentThread().isInterrupted()) {
                        mCirclrBar.setProgress(count);
                        mRecBar.setProgress(count);
                        mRecBar.setSecondaryProgress(count / 2);
                    }

                    break;

                default: break;
            }
            super.handleMessage(msg);
        }
    };

    private void initView() {
        mCirclrBar = findViewById(R.id.circlrBar);
        mRecBar = findViewById(R.id.recBar);
        mStart = findViewById(R.id.start);
    }
}

bar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/suo"
        />

    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/jiesuo"
        />

    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/suozi"
        />


</layer-list>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.admin.vip_05.MainActivity"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Progress使用实例"
        android:textSize="20sp"
        />

    <!--圆形进度条-->
    <ProgressBar
        android:id="@+id/circlrBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <!--长方形进度条-->
    <ProgressBar
        android:id="@+id/recBar"
        android:progressDrawable="@drawable/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal"
        />

    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始" />

</LinearLayout>

这里写图片描述

background为灰色的锁,progress为绿色的锁,secondaryProgress为灰色的锁。

2、seekBar

这里写图片描述

 private SeekBar mBar;
 private TextView mTextView;
 int seekData = 0;

手动改变进度条的位置:

        mBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                mTextView.setText("当前进度为:" + progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

自动改变进度条位置:

 new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    if (mBar.getProgress() == 100) {
                        mBar.setProgress(0);
                        seekData = 0;
                    }
                    mBar.setProgress(seekData += 5);
                    String src = "" + seekData;
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

3、layer-list

3.1 边线效果

<!--使用蓝色填充-->
    <item>
        <shape>
            <solid android:color="#40ff00"/>
        </shape>
    </item>

    <!--距离顶层与底层1dp-->
    <item android:top="1dp"
        android:bottom="1dp"
        >
        <shape>
            <solid android:color="#e2a3a3"/>
        </shape>
    </item>

这里写图片描述

相当于先用一个绿色背景,后再用一个红色背景覆盖,并在上下各留出1dp的大小,达到边线的效果。

3.2 阴影效果

这里写图片描述

<item android:left="3dp"
        android:top="6dp"
        >
        <shape>
            <solid android:color="#b4b5b6"/>
        </shape>
    </item>

    <item android:bottom="6dp"
        android:right="3dp"
        >
        <shape>
            <solid android:color="#fff"/>
        </shape>
    </item>

这里textView的高度改为50pdp,会好一些。

这里设置一些比较大的值,来显示一下各个参数的含义。

这里写图片描述

3.3 缩放效果

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap
            android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="50dp"
        android:top="50dp"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="70dp"
        android:top="70dp"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>
</layer-list>

3.4 平移效果

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:gravity="center">
        <bitmap
            android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="10dp"
        android:top="10dp"
        android:gravity="center"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="20dp"
        android:top="20dp"
        android:gravity="center"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>
</layer-list>
android基础控件(1)TabHost实现选项卡 TabHost+TabWidget+FragmentLayout 1.1 主布局main_layout <TabHost android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/tabhost"> 自带布局 <LinearLayout android:layout_width="match_paren 阅读详情

相关推荐

Android基础控件用法介绍

基础控件使用介绍

让每一个想学习编程的人,都能学会,都能看懂,看了都有收获! 573

【Android从零单排系列十二】《Android视图控件——SeekBar》

SeekBar是Android平台上的一个UI组件,用于显示一个可滑动的滑块条,并允许用户通过拖动滑块来选择一个数值范围。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1714

西门子200 SMART与博图WinCC通讯全攻略:从PC Access到S7-200协议避坑指南

本文详细解析了西门子S7-200 SMART PLC与博途WinCC上位机通讯的两种主流方案:基于PC Access SMART的OPC通讯和利用博途内置S7-200协议驱动直连。文章深入对比了两种架构的优缺点、配置步骤,并提供了从网络层到软件层的深度排错指南与性能优化建议,帮助工程师高效、稳定地实现系统集成。

gg901的博客 810

SeekBar的几种常见用法

SeekBar的几种常见方法,SeekBar详解,SeekBar总结

aylr2015的博客 5518

C语言编写Picard迭代和牛顿迭代法

为了完成学校计算方法的作业,花了两个多星期将所有实验报告编写出来,看到同桌找代码的辛苦,优快云也没有这类代码,我只是一时兴起,想分享我写的代码与大家共飨,有错误还请多多指正,代码都不难,也是为了让优快云帮我保存下,我辛辛苦苦做出来的,倘若能给别人带来一丝一毫的帮助,我都万分荣幸。 1:什么是Picard迭代 先弄一个满足f(x) = 0的函数将其转化为x= 正在上传… 重新上传 取消 ...

mohenxiang的博客 4699

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 496

安卓进度条:ProgressBar和Seekbar

是 Android 中的一个进度条控件,用于显示正在进行的任务的进度。它可以以水平或圆形的形式展示进度,并提供了多种样式和属性来满足不同的需求。SeekBar是 Android 中的一个可滑动条控件,用于允许用户通过滑动来选择一个数值或调整某种设置。它通常用于音量控制、亮度调节、进度选择等场景。SeekBar 继承自 ProgressBar 类。

A125679880的博客 8340

从零构建:如何用MATLAB工具箱打造你的第一个多体动力学仿真模型

本文详细介绍了如何使用MATLAB的Simscape Multibody工具箱从零开始构建多体动力学仿真模型,特别适合初学者学习倒立摆系统的建模与仿真。文章涵盖环境准备、坐标系设置、物理模型构建、参数化建模及性能优化等关键步骤,帮助工程师快速掌握这一强大的仿真工具。

water的专栏 964

Android SeekBar控件

# 1. SeekBar类 SeekBar类是滑动条,用于进度控制。主要属性 max,指定滑动条的最大值 progress,指定滑动条的当前值 通过setOnSeekBarChangeListener的回调方法实现SeekBar的拖动事件 onProgressChanged,进度发生改变时会触发 onStartTrackingTouch,按住SeekBar时会触发 onSto...

假装你是大灰狼的专栏 2万+

【SPI-NAND】Linux驱动移植实战:从规格书解析到内核适配

本文详细解析了SPI-NAND Flash的Linux驱动移植实战,从规格书关键参数提取到内核MTD子系统适配。内容涵盖存储结构解析、命令集映射、设备树配置及厂商驱动开发,特别强调ECC校验、坏块管理等NAND特性处理,并提供了性能优化与测试验证的实用技巧。

weixin_27076351的博客 351

【微服务】Java 对接飞书多维表格使用详解

Java 对接飞书多维表格使用详解

congge_study的博客 1万+

Android控件SeekBar值得注意的属性设置

1、设置thumb透明展示进度线效果 情景描述:UI给了一张带有阴影效果的滑块,然后我们设置android:thumb="@mipmap/xxx"后效果如下 滑块两边有一块空白区域,这是因为系统没有绘制滑块后方的线条,即滑块和线处于同一层次,而我们想要的效果则是滑块覆盖在线条上且透明。因此,我们只需要设置以下代码: android:splitTrack=“false” //默认为true 效果如下 2.padingStart与paddingEnd seekbar控件自带内间距,我们常常能看见,设置的进

简单技术记录总结栈 7597

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2781

Android_UI基础控件2

一、ImageView与ImageButton&lt;ImageView android:layout_width="300dp" android:layout_height="200dp" android:src="@drawable/ic_launcher_background" android:background="#2222...

Castanea的博客 277

数字电视中的AD(Audio Description)音频描述技术详解

AD(Audio Description)音频描述是一种辅助技术,旨在帮助视障人士更好地理解视觉内容。通过在节目或视频的自然停顿处插入额外的语音叙述来解释屏幕上的视觉信息,如人物动作、场景变化、文字说明等,从而让视力受损的人士也能获得完整的观影体验。AD服务不仅限于电视广播,也广泛应用于电影、剧院表演、在线视频平台等领域。PID:用于标识和区分不同的音频流。PMT表:提供每个音频流的详细信息,包括PID、编解码器类型和语言代码。时间戳:PTS和DTS用于同步音频与视频内容。解复用。

以实战经验介绍行业知识 741

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

2、Android基础控件(3)(按钮)

按钮控件Button由TextView派生而来,它们之间的区别有:(1)Button拥有默认的按钮背景,而TextView默认无背景;(2)Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐;(3)Button会默认将英文字母转为大写,而TextView保持原始的英文大小写;

weixin_62190821的博客 1057

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android studio学习笔记2 初识应用界面编写-基础控件与线性布局

Android studio学习笔记2 初识应用界面编写-基础控件与线性布局

w5683971的博客 207

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

2、Android基础控件(2)(常用布局和滚动条)

水平方向滚动时,layout_width属性值设置为wrap_content,layout_height属性值设置为match_parent。(1) ScrollView,它是垂直方向的滚动视图;垂直方向滚动时,layout_width属性值设置为match_parent,layout_height属性值设置为wrap_content。(2)该视图的上级视图(也就是它归属的RelativeLayout) 如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角。

weixin_62190821的博客 1069

Android |(六)基础控件2 EditText输入框

【代码】Android |(六)基础控件3 EditText输入框。

codeSong的博客 439

【android学习笔记】第四篇——基础控件2

好久没上啦!补更。 ProgressBar 长条形进度条变动态: 写一个让进度值变大变小的实例: //progress bar 在Oncreate 中生命,class要接上Runnable接口 private Thread th;//线程 private ProgressBar pbh; private boolean statechange;/...

qq_42795049的博客 187

Android基础控件介绍

Android基础控件介绍

一起coding,一起嗨。 1419

(三)安卓基础控件与常用控件的使用

在安卓应用开发中,控件(Views)是构建用户界面的基本元素。理解和使用各种基础控件对于创建功能丰富且用户友好的应用至关重要。本文将介绍安卓开发中常用的基础控件、它们的属性、用法以及一些实践示例,帮助你快速掌握这些关键组件。掌握安卓基础控件是开发优秀应用的关键。通过本文的介绍和实践示例,希望你对安卓基础控件有一个全面的了解,并在实际开发中灵活应用。持续学习和实践是掌握安卓控件的关键,祝你在安卓开发的道路上取得成功!

小新的博客 1216

Android原生基础控件

Android常用UI控件及属性解析 本文总结了Android开发中常用的UI控件及其核心属性。主要内容包括: 通用属性:如layout_width/height、id、margin/padding、gravity等基本设置 TextView:字体大小、颜色、单行显示、跑马灯效果等文本处理 EditText:输入类型、提示文字、最大长度等输入控制 ImageView:图片显示与背景设置 Button:4种点击事件实现方式(内部类、匿名内部类、接口实现、XML绑定) ProgressBar:圆形和水平进度条样

m0_73444363的博客 1127

安卓基础控件小结

布局,TextView:EditText:inmageView,Button;RadioButton:inmagebutton:checkbox:

qq_41738599的博客 705

Android Studio基础控件题目及代码

分别在这两个地方写代码 写完代码在这里新建一个虚拟机并启动开机: 运行代码: 题目一: Activity_main.xml中的代码如下图所示,请在MainActivity.java文件中编写代码,实现如下功能: (1)点击按钮1时,在按钮1的地方显示文字“按钮1已被点击”(点击事件采用在布局文件中指定Button控件的onClick属性方式); (2)点击按钮2时,在最下方显示文字“按钮2已被点击”,一段时间后文字消失(点击事件采用接口方式); (3)点击按钮3时...

weixin_55797565的博客 5495

Android控件与布局——基础控件Button

最近在用原生的控件和布局绘制一些界面并使用,虽然这些都是Android基本知识,但是有的时候真的感觉力不从心,感觉有必要对Android常用的控件和布局做一个系统的了解。后续一个月甚至更多的时间都会围绕这个主题展开,毕竟这里面还是有不少高级控件的,我也会尽量结合应用深入的进行了解。 项目GitHub地址入口 下一篇:ToggleButton 今天,我们的主题是基础控件Butt...

hfut_why的博客 4022
上一篇: SQLite基础知识
下一篇: ListView与GridView
ReScale
博客等级 码龄9年 10粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值