6.常用控件(三) 之 ProgressBar控件-handler及RadioButton

24.Android-实现黑名单电话拦截 一.知识概括 二.具体代码实现 1.建aidl包 2.拷贝以下文件到项目的aidl包中 下载地址: NeighboringCellInfo.aidl和ITelephony.aidl 3.在清单文件AndroidManifest.xml中添加权限 <manifest xmlns:android="http://schemas.android.com 阅读详情

例1:

首先,让我们来看一下我们要实现的效果图,如下

具体代码实现

res下面的layout布局文件progressbar.xml


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


    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pb_progressbar_bar"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下载"
        android:onClick="download"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_progressbar_num"/>


</LinearLayout>
配置xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zking.android06_widget3">

    <application android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">

        </activity>

        <!--写配置-->
        <activity android:name=".ProgressBarActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

java代码

package com.zking.android06_widget3;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

/**
 * Created by Administrator on 2017/6/7 0007.
 */

public class ProgressBarActivity extends AppCompatActivity{

        private ProgressBar pb_progressbar_bar;
        private TextView tv_progressbar_num;

       @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.progressbar);
                pb_progressbar_bar = (ProgressBar) findViewById(R.id.pb_progressbar_bar);
                tv_progressbar_num = (TextView) findViewById(R.id.tv_progressbar_num);
        }

       /**
        * 报错:ANR
        * application not responsing 应用程序未响应
        * why:在主线程中执行了耗时的操作
        * how:在子线程中执行耗时操作(解决方法)
        * @param view
        */
        public void download(View view){
                new MyThread().start();//一点按钮就执行
        }

        //线程间通信需要Handler
        Handler hander=new Handler(){
                //接收消息,更新UI界面
                @Override
                public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        int i= msg.what;
                        tv_progressbar_num.setText(i+"%");
                }
        };

        class MyThread extends Thread{//在子线程中执行耗时操作
               @Override
               public void run() {
                     super.run();
                     for (int i = 0; i <=100 ; i++) {//fori+回车  循环0~100
                           pb_progressbar_bar.setProgress(i);//给进度条设值
                           //在子线程中发消息
                           hander.sendEmptyMessage(i);
                           try {
                                Thread.sleep(100);//抛异常:Alt+回车
                           } catch (InterruptedException e) {
                                e.printStackTrace();
                           }
                     }
               }
        }



}


例2:
效果图:

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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="com.zking.android06_widget3.MainActivity"
    android:orientation="vertical"  >

    <ImageView
            android:layout_width="380dp"
            android:layout_height="380dp"
            android:id="@+id/img_main_img1"
            />
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <RadioGroup
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:id="@+id/radio_rbs"
                    >
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="1号佳丽"
                            android:ems="3"
                            />
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="2号佳丽"
                            android:ems="3"
                            />
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="3号佳丽"
                            android:ems="3"
                            />
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="4号佳丽"
                            android:ems="3"
                            />
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="5号佳丽"
                            android:ems="3"
                            />
                    <RadioButton
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="6号佳丽"
                            android:ems="3"
                            />
            </RadioGroup>
    </LinearLayout>


</LinearLayout>
方式一:MainActivity.java(从drawable里面获取图片)
package com.zking.android06_widget3;

import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity {

    private ImageView img;
    private RadioGroup rbs;
    private int images[]={R.drawable.s1,
                            R.drawable.s2,
                            R.drawable.s3,
                            R.drawable.s4,
                            R.drawable.s5,
                            R.drawable.s6
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        img = (ImageView) findViewById(R.id.img_main_img1);
        rbs = (RadioGroup) findViewById(R.id.radio_rbs);

        //给ImageView设置初始图片
        img.setImageResource(images[0]);

        rbs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                //切换图片
                img.setImageResource(images[checkedId]);
            }
        });
    }



}

方式二:MainActivity.java(从内存里面获取图片)
配置xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zking.ap6">


    <!--读取内存卡的权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>


    <application android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>


</manifest>
package com.zking.ap6;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RadioGroup;

import java.io.File;

public class MainActivity extends AppCompatActivity {

    private ImageView img;
    private RadioGroup rbs;
    File[] files;

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

            img = (ImageView) findViewById(R.id.img_main_img1);
            rbs = (RadioGroup) findViewById(R.id.radio_rbs);

            //给ImageView设置初始图片
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                String s=Environment.getExternalStorageDirectory().getAbsolutePath();
                File file=new File(s+"/images");
                files=file.listFiles();
            }
            Bitmap bm= BitmapFactory.decodeFile(files[0].getAbsolutePath());
            img.setImageBitmap(bm);
            rbs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                        //切换图片
                        Bitmap bm= BitmapFactory.decodeFile(files[checkedId].getAbsolutePath());
                        img.setImageBitmap(bm);
                    }
            });
    }



}





28.Android-多媒体(视频播放器-拍照-录像) 一.知识概要 1.拍照实现步骤:     界面使用SurfaceView控件,显示照相机的画面     SurfaceView接受摄像头界面变化的信息         surfaceView.getHolder().addCallback()     重写三个方法         surfaceDestroyed--->当预览界面关闭时,触发             一般在这里执行销 阅读详情

相关推荐

手把手教你用STM32单片机控制双向可控硅调光(附完整代码+电路图)

本文提供了一套完整的STM32单片机控制双向可控硅实现灯光无级调光的实战方案。详细讲解了硬件电路设计,包括过零检测与隔离驱动,并剖析了基于定时器中断的软件核心逻辑,通过精准的相位角计算实现平滑的灯光强度控制。附有完整代码与电路图,适合嵌入式开发者实践。

weixin_29194255的博客 952

C#之RadioButton的使用

RadioButton是圆形单选按钮,在同一个容器中,单选项互斥;不同容器中的RadioButton互相独立。完成页面布局。2.代码 RadioButton is_rise;//用来保存是否正向计分的值if (radioButton2.Checked) is_rise = radioButton2;//如果反向计分被选中3:获取结果is_rise .Text...

望生帝的博客 1万+

合宙ESP32C3实战:MPU6500六轴传感器数据读取与校准全解析

本文详细解析了如何使用合宙ESP32C3开发板读取和校准MPU6500六轴姿态传感器数据。从硬件接线、开发环境搭建到核心代码解析,提供了全面的实战指南,帮助开发者快速掌握传感器配置与数据处理技巧,适用于姿态控制、运动检测等应用场景。

weixin_27066963的博客 404

RadioGroup里RadioButton显示多行实现(非常简单)

RadioGroup显示多行实现步骤RadioGroup里面包裹的RadioButton的特性是单选和互斥,该种需求在项目中用到的比较多。RadioButton实现多行显示的话就失去了本来的特性。网上多数是自定义来处理这种需求,来实现单选和互斥。本例子使用于比较少的按钮,你只需要把以前的代码稍作修改就能实现多行显示的效果。介绍一下原来的需求 rb.setOnCheckedChangeL

鲨鱼不会飞的博客 5791

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1606

219页华为供应链管理:市场预测S&OP计划、销售预测与存货管理精要

S&OP计划的整合作用:S&OP是一种综合的销售和运营计划流程,它将市场预测、生产能力、库存水平和财务目标整合在一起,以确保企业能够平衡供需,实现最佳的运营效率。持续监控与改进:市场预测、S&OP计划、计划委员会的决策以及存货管理都需要持续的监控和评估。供应链策略与执行:华为ISC拥有清晰的供应链策略,并通过SISC架构实现了策略的有效执行,包括供应链网络设计、库存管理、物流优化等。持续的供应链创新:华为ISC不断探索新的供应链管理方法和技术,如数字化供应链、智能物流等,以适应全球化和市场的快速变化。

zuoan1993的博客 2433

RadioButton利用三个单选按钮写一个石头剪刀布的小项目、开辟子线程、和Handler

package xena.act; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import androi

qq_26544283的博客 503

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势

本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。

weixin_42593130的博客 659

进度条 ProgressBar与子线程访问主线程(线程中的通信handler)

一、进度条 ProgressBar 1、常用属性: style=”?android:attr/progressBarStyleHorizontal” 默认为圆形 android:progress=”33” //当前进度 android:max=”100” //最大进度 2、进度条上的百分比用帧布局: ...

jc1121的博客 464

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例)

本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。

weixin_27017211的博客 261

自定义Usecase/Pipeline

Summary of Custom Usecase and Pipeline Configuration in SA8650 QCX Framework This article elaborates on the complete process of customizing a new Usecase and Pipeline based on the SA8650 QCX framework to meet OEM and Tier1 customization requirements, with

qq_39257814的博客 929

ProgressBar线程更新问题

ProgressBar是一个特殊的控件,可以在子线程中修改它的值,因为系统会帮你判断是不是在主线程进行的,如果不是,系统会帮你做UI更新final ProgressBar pb = new ProgressBar(SplashActivity.this, null, android.R.attr.progressBarStyleHorizontal);

代码二毛 892

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

五、Android学习第四天补充——Android的常用控件(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五、Android学习第四天补充——Android的常用控件 熟悉常用的Android的几个常用控件的使用方法: 一、RadioGroup和RadioButton——单选按钮 二、Checkbox——复选框 三、Toast——提示框,会自动消失 四、Progre...

weixin_34240520的博客 65

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

<7.23>新的启航 Android学习笔记(三)

新的启航 Android学习笔记(三) 今日目标: 1.继续学习android

Coding_Life 471

Statistics and Machine Learning Toolbox

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

Android学习笔记: 第四天

12. 常见控件(二) RadioGroup,  RadioButton 和 Toast<RadioGroup android:id="@+id/genderGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android

jingsheng321的专栏 339

第二节 QML基础知识:语法、基本元素与属性绑定

当属性值是一个JS 表达式(而非字面量)时,QML 引擎会记录表达式引用的所有属性,任何一个被引用属性变化时,表达式都会重新求值width: 400;height: 50radius: 25x: parent.width / 2 - width / 2 // 引用了 parent.width 和自身 width当 parent.width 变化时,x 自动重算 → 圆点始终居中。不需要任何手动刷新代码。

ITOfDragon的博客 192

Windows 11临时文件自动化管理方案

json"name": "清理特定软件缓存","description": "清理Adobe Creative Cloud缓存","paths": [],},"name": "清理开发环境","description": "清理编程临时文件","paths": [],全面性:覆盖Windows 11所有主要临时文件类型智能性:基于规则的智能决策,避免误删自动化:完全自动化操作,减少人工干预安全性:多重保护机制,确保系统稳定可扩展性:模块化设计,易于定制和扩展。

zzywxc787的博客 978

ProgressBar、Handler的简单使用

xml version="1.0" encoding="utf-8"?> xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:l

常态丨的博客 686

Android UI控件系列:ProgressBar(进度条)

关注微信号:javalearns   随时随地学Java 或扫一扫 随时随地学Java Android在执行一些后台操作的时候,比如加载游戏,播放歌曲时,用户根本不知道程序执行的进度情况,这时候,可以使用进度条来显示这些进度。 Andorid系统提供两种进度条,长条形进度条(progressBarStyleHorizontal)和圆形进度条(pr

323

Android实现文字逐字显示出来效果

效果图如下: 可以采用自定义TextView的方式去实现,也可才用定时更新文字显示,思路是让TextView每隔一秒显示以一个字符串(并非每一秒多出来一个汉字),那么就简单了,可以开启一个线程,实现代码如下: 1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

_北冥有鱼_的博客 6798

29.Android-闹钟-通知(定时操作)

一.知识概要 二.具体代码实现如下: 布局文件 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xm

_北冥有鱼_的博客 1040

23.本地服务Services

一、服务简介         执行耗时操作(后台) 二.如何创建本地服务知识概括 三.案例 1.具体实现代码 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sch

_北冥有鱼_的博客 822

32.Android端向web端(服务器)提交数据(GET-POST-AsyncHttpClient)

一.使用Eclipse的web服务端(先写web服务端Android端才能调) login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 登录 登录页面 用户名: 密码: LoginServlet

_北冥有鱼_的博客 804

13.退出应用程序(递归和栈退出)

一.递归退出 递归执行方式:A调B,B跳C,C跳D。 当在D里面退出,就D跳C,C跳B,B跳A,然后就退出了(一个一个退)效果图:实现代码如下:activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http

_北冥有鱼_的博客 746

7.高级控件(一)之AutoCompleteTextView和MultiCompleteTextView及Spinner-ListView

1.AutoCompleteText自动完成文本框(自动补全)   首先让我们来看一下我们要完成的效果图(右) 具体代码实现 布局文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sch

_北冥有鱼_的博客 681
上一篇: 4.常用控件(一)
下一篇: 7.高级控件(一)之AutoCompleteTextView和MultiCompleteTextView及Spinner-ListView
_北冥有鱼_
博客等级 码龄10年 41粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值