Android开发 ---基本UI组件4:拖动事件、评分进度条、圆圈式进度条、进度条控制
Android开发 ---基本UI组件4
1、activity_main.xml
描述:
定义了一个按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="其他控件"
android:onClick="test_4"/>
</LinearLayout>
2、MainActivity.java
描述:
页面跳转
package com.example.android_ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}public void test_4(View view){
Intent intent=new Intent(this,OtherUIActivity.class);
startActivity(intent);
}
}
3、activity_other_ui.xml
描述:
1、一段文本
2、一个进度条 --SeekBar
3、一个 星星评分条
4、一个画圆圈式进度条
5、从系统Theme.xml中引入的资源设置一个进度条 -----?表示从Theme中查找引用的资源名
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/activity_other_ui"
android:layout_width="match_parent"
android:layout_marginLeft="10dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/showText"
android:text="我是一段文字"
android:textSize="25sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<SeekBar
android:id="@+id/seekBar"
android:max="60"
android:progress="0"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <RatingBar
android:id="@+id/ratingBar"
android:max="5"
android:progress="0"
android:stepSize="0.5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <ProgressBar
android:id="@+id/pb1"
android:max="100"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/pb2"
android:max="100"
style="?android:progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <ProgressBar
android:id="@+id/pb3"
android:max="100"
android:progress="10"
style="?android:progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<Button
android:layout_width="match_parent"
android:layout_weight="1"
android:text="开始"
android:onClick="doStart"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_weight="1"
android:text="停止"
android:onClick="doStop"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
4、OtherUiActivity.java
package com.example.android_ui; import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast; public class OtherUIActivity extends Activity {
//获取进度条
private SeekBar seekBar;
//获取文本框
private TextView showText;
//获取评分条
private RatingBar ratingBar;
//获取圆圈式进度条
private ProgressBar pb3;
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other_ui);
showText=(TextView)findViewById(R.id.showText); seekBar=(SeekBar)findViewById(R.id.seekBar);
ratingBar=(RatingBar)findViewById(R.id.ratingBar);
pb3=(ProgressBar)findViewById(R.id.pb3);
//seekBar拖动事件
/*
拖动进度条的事件监听需要实现SeekBar.OnSeekBarChangeListener接口,
调用SeekBar的setOnSeekBarChangeListener把该事件监听对象传递进去进行事件监听。
事件监听接口中有三个重要的方法:
1、onStartTrackingTouch方法
该方法拖动进度条开始拖动的时候调用。
2、onStopTrackingTouch方法
该方法拖动进度条停止拖动的时候调用
3、onProgressChanged
该方法拖动进度条进度改变的时候调用
*/
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
//参数b用来判断拖动是否结束,参数i表示当前进度
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
//seekBar.getProgress()是获取拖动条当前值
//shoqText.setTextSize()自绘制文字的大小
//实现通过得到拖动条当前值来改变字体大小的目的
showText.setTextSize(seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//Toast.makeText(OtherUIActivity.this,"sk:"+seekBar.getProgress(),Toast.LENGTH_LONG).show();
}
}); //使用线程控制seekBar一直变化
new Thread(new Runnable() {
@Override
public void run() {
while(count<60){
//操作UI的代码运行在UI线程中
runOnUiThread(new Runnable() {
@Override
public void run() {
//设置进度条的当前值
seekBar.setProgress(count);
}
});
count++;
//每改变一次停留半秒
SystemClock.sleep(500);
}
}
}).start(); //给星星评分条设置改变监听事件
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
Toast.makeText(OtherUIActivity.this,"你打了"+v+"分",Toast.LENGTH_SHORT).show();
}
});
}
//设置点击开始按钮,进度条开始运行,
boolean isRun=true;
//进度条从0开始
int down=0;
public void doStart(View view){
new Thread(new Runnable() {
@Override
public void run() {
while(isRun){
//更新下载进度
down++;
pb3.setProgress(down);//唯一一个可以在UI多线程中更新的
SystemClock.sleep(200);
if(down>=100){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OtherUIActivity.this,"数据下载完毕",Toast.LENGTH_LONG).show();
//当数据下载完毕时调用doStop()方法,停止进度条运行
doStop(null);
}
});
}
}
}
}).start();
}
//当点击停止按钮时,进度条停止运行,并将进度条当前位置的值清空
public void doStop(View view){
isRun=false;
pb3.setProgress(0);
down=0;
}
}
Android开发 ---基本UI组件4:拖动事件、评分进度条、圆圈式进度条、进度条控制的更多相关文章
- Android开发 ---基本UI组件3:单选按钮、多选按钮、下拉列表、提交按钮、重置按钮、取消按钮
Android开发 ---基本UI组件2 1.activity_main.xml 描述: 定义一个用户注册按钮 <?xml version="1.0" encoding=&q ...
- Android开发 ---基本UI组件2:图像按钮、单选按钮监听、多选按钮监听、开关
Android开发 ---基本UI组件2 1.activity_main.xml 描述: 定义一个按钮 <?xml version="1.0" encoding=" ...
- Android开发 ---基本UI组件7 :分页功能、适配器、滚动条监听事件
效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- Android开发 ---基本UI组件8:九宫格布局、setOnItemClickListener()项被选中监听事件
效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- Android开发 ---基本UI组件5:监听下拉选项,动态绑定下拉选项、全选/反选,取多选按钮的值,长按事件,长按删除,适配器的使用,提示查询数据,activity控制多按钮
效果图: 效果描述: 1.当点击 1 按钮后,进入选择城市的页面,会监听到你选中的城市名称:动态为Spinner绑定数据 2.当点击 2 按钮后,进入自动查询数据页面,只要输入首字母,就会动态查找以该 ...
- Android开发 ---基本UI组件6 :只定义一个listView组件,然后通过BaseAdapter适配器根据数据的多少自行添加多个ListView显示数据
效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- Android开发---基本UI组件1:自动拨电话,自动上网,输入框不换行、只输数字、只输文本、只输密码
1.activity_main.xml 描述:构建一个按钮 <?xml version="1.0" encoding="utf-8"?> <L ...
- android开发之自定义组件
android开发之自定义组件 一:自定义组件: 我认为,自定义组件就是android给我们提供的的一个空白的可以编辑的图片,它帮助我们实现的我们想要的界面,也就是通过自定义组件我们可以把我们要登入的 ...
- ReactNative Android之原生UI组件动态addView不显示问题解决
ReactNative Android之原生UI组件动态addView不显示问题解决 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com ...
随机推荐
- 0003-20180422-自动化第三章-python基础学习笔记
3章 内容回顾: 1. 计算机组成 2. 程序编译器 3. 变量 4. 条件 5. 循环 6. py2与py3区别 - 默认编码, - 除法, - input ,raw_input 7. 位,字节关系 ...
- Python Logging模块 输出日志颜色、过期清理和日志滚动备份
# coding:utf-8 import logging from logging.handlers import RotatingFileHandler # 按文件大小滚动备份 import co ...
- java之接口文档规范
一.xxxxxx获取指定任务爬取的所有url的接口 接口名称:xxxxxx获取指定任务爬取的所有url的接口 访问链接: http://IP:PORT/crwalTask/findUrlExcepti ...
- 内置函数_map、filter
1.map #循环帮你调用函数 map(makir,dir_names) #生成器,结果是一个内存地址.为了节省内存,每次循环时,就按照定义的规则去生成一个数据,循环一次释放一次生成的数 ...
- H5开发:横屏适配
平常我们做过的需求里,主要是以竖屏式为主,而横屏式较少.对于竖屏式场景来说,大家的经验会比较丰富,因此,此次主要式探讨下横屏式场景下的一些需要注意的点,特别是怎样去做横屏适配. 对于 H5 横屏页面来 ...
- 2019/4/11 wen 常用类2
- K8S学习笔记之kubernetes 日志架构
0x00 概述 应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的.而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中 ...
- 对比Python中_,__,xx__xx
对比Python中_,__,xx__xx _ 的含义 不应该在类的外面访问,也不会被from M import * 导入. Python中不存在真正的私有方法.为了实现类似于c++中私有方法,可以 ...
- Codeforces Round #505 (Div 1 + Div 2 Combined) Solution
从这里开始 题目列表 瞎扯 Problem A Doggo Recoloring Problem B Weakened Common Divisor Problem C Plasticine zebr ...
- Javascript 字典应用实例
字典时一个很有用的工具,在之前C#项目中有经常使用,这篇博文主要讲解在Javascript中,字典的实际应用场景 首先在JS中,是没有Dictionary‘类的,我们需要实现键值(KEY) -- 数值 ...