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 ...
随机推荐
- 基于Jenkins实现持续集成【持续更新中】
持续集成 1.什么是持续集成:Continuous integration (CI)持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生 ...
- windows 如何创建硬链接
输入代码:mklink /d F:\ D:\pdf mklink /d 是命令语句,空格,接着是放置硬链接的位置,空格,再是目标文件夹.
- Python数据分析Pandas库数据结构(一)
pandas数据结构 1.生成一维矩阵模拟数据 import pandas as pdimport numpy as nps = pd.Series([1,2,3,4,np.nan,9,9])s2 = ...
- GoldenGate BR(bounded Recovery)简单说明
背景 Oracle数据库的在线日志包含已提交的和未提交的事务,但OGG只会将已提交的事务写入到队列文件.因此,针对未提交的事务,特别是未提交的长事务,OGG会怎样处理呢? 有些长事务是在批处理作业中, ...
- lvs 初始 第一章
Linux Virtual Server 第一章 初识 一 . 介绍 LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动 ...
- [LspTrace]ReadAccConfig returns false! QT
当qt运行出现以下信息时 [LspTrace]ReadAccConfig returns false! [LspTrace]FindMatchingProvider: inInfo is one of ...
- Ubuntu 14.04 下安装 OpenCV
参考: Installation in Linux Error compiling OpenCV, fatal error: stdlib.h: No such file or directory 图 ...
- 浅谈JS中的typeof和instanceof的区别
JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型. typeof typeof运算符返回一个用来表示表达式的数据类型的字符串. typeof一般返回以下几个字符串: ...
- nyoj308-Substring
#include<stdio.h> #include<string.h> #include<string> #include<math.h> #incl ...
- SpringBoot MyBatis 配置多数据源 (静态多个)
转载地址:https://www.jianshu.com/p/118ca1d5ecf9?utm_campaign=haruki&utm_content=note&utm_medium= ...