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 ...
随机推荐
- Python取整及保留小数小结
1.int() 向下取整 内置函数 n = 3.75 print(int(n))>>> 3 n = 3.25 print(int(n))>>> 3 2.round ...
- Html img 标签
Html img 标签 <html> <body> <!-- img 标签用于显示图片.src="xxx.jpg" 指定图片路径名称--> &l ...
- Docker Kubernetes Volume 网络数据卷
Docker Kubernetes Volume 网络数据卷 由于支持网络数据卷众多 今天只拿nfs作为案例. 支持网络数据卷 nfs iscsi glusterfs awsElasticBlockS ...
- inotify+rsync架构实现实时同步
前序 使用inotify+rsync架构实现(文件夹/文件)实时同步, 双机之间需要ssh免密码配置(两步完成ssh免密码登录) 环境 客户端:192.168.137.176 (rsync + ino ...
- webpack 几个基本打包扩展项的安装命令
网速比较慢的童鞋,装包时请准备好花生瓜子 webpack 本身只能打包 JavaScript 模块,但是它可以通过拓展打包比如静态资源文件.less.sass.typescript 等,还可以通过 b ...
- ant_任务的含义与使用
任务是一段可执行的代码.任务可以具有多个属性,每个任务都具有共同的结构.任务常见结构由名称,属性等组成. 任务配置结构示例: <task-name attribute1 = "valu ...
- bzoj千题计划168:bzoj3513: [MUTC2013]idiots
http://www.lydsy.com/JudgeOnline/problem.php?id=3513 组成三角形的条件:a+b>c 其中,a<c,b<c 若已知 两条线段之和=i ...
- jQuery validator plugin之Selector
原文 :unchecked Selector Selects all elements that are unchecked. jQuery( ":unchecked" ) Inv ...
- Google advertiser api开发概述——入门指南
使用入门 AdWords API 可让应用直接与 AdWords 平台互动,大幅提高管理大型或复杂 AdWords 帐号和广告系列的效率.一些典型的用例包括: 自动帐号管理 自定义报告 基于产品目录的 ...
- POJ1141 Brackets Sequence---区间DP+输出路径
题目意思就是输入一串括号,让你找到最小的补偿数目使括号串合法,并且输出补全后的串. 基本是区间DP的模板题,该题特别让你输出补全后的答案.这和区间dp的反向思路很像,就是把一个大的区间划分为多个互不干 ...