第十一讲:用户界面 View(六)

2024-04-29 00:48
文章标签 第十一 view 用户界面

本文主要是介绍第十一讲:用户界面 View(六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本讲内容:ProgressBar SeekBar RatingBar
点击下载:  lesson11.zip (129.18 KB, 下载次数: 527)
十一、ProgressBar 进度条
在某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中。Android中使用ProgressBar来实现这一功能:
1、简单的进度条
在xml中添加:
  1. <ProgressBar android:id=”@+id/ProgressBar01″
  2. android:layout_width=”wrap_content”
  3. android:layout_height=”wrap_content”>
  4. </ProgressBar>
复制代码

就可以看到下面,圆形的、大大的圈圈:
1.png
2、各种各样的圆圈:
2.png
注意标题栏上也有一个进度条,下面是代码:
  1. package android.basic.lesson11;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Window;

  5. public class MainHelloProgressBar extends Activity {
  6.     /** Called when the activity is first created. */
  7.     @Override
  8.     public void onCreate(Bundle savedInstanceState) {
  9.         super.onCreate(savedInstanceState);
  10.       //在标题条里放置进度条。请求窗口特色风格,这里设置成不明确的进度风格
  11.       requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  12.       setContentView(R.layout.main);
  13.       //设置标题栏中的不明确的进度条是否可以显示,当你需要表示处理中的时候设置为True,处理完毕后设置为false
  14.       setProgressBarIndeterminateVisibility(true);
  15.     }
  16. }
复制代码

下面试main.xml中的代码,大家注意黑体字部分的内容,看看不同样式的不同的表现:

  1. <?xml version=”1.0″ encoding=”utf-8″?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”android:orientation=”vertical”android:background=”#003399″android:layout_width=”fill_parent”android:layout_height=”fill_parent”><ProgressBar android:id=”@+id/ProgressBar01″android:layout_width=”wrap_content”android:layout_height=”wrap_content”></ProgressBar><ProgressBar android:id=”@+id/ProgressBar02″style=”?android:attr/progressBarStyleLarge”           大圆圈android:layout_width=”wrap_content”android:layout_height=”wrap_content”></ProgressBar><ProgressBar android:id=”@+id/ProgressBar03″style=”?android:attr/progressBarStyleSmall”          小圆圈android:layout_width=”wrap_content”android:layout_height=”wrap_content”></ProgressBar><ProgressBar android:id=”@+id/ProgressBar03″style=”?android:attr/progressBarStyleSmallTitle”   标题条的样式android:layout_width=”wrap_content”android:layout_height=”wrap_content”></ProgressBar>
  2. </LinearLayout>
复制代码


3、长条状的进度条
xml代码:

  1. <ProgressBar android:id=”@+id/ProgressBar04″style=”?android:attr/progressBarStyleHorizontal”android:layout_marginLeft=”10dp”
  2. android:layout_marginRight=”10dp”android:max=”100″                                  最大刻度按100算android:progress=”30″                              第一进度是30android:secondaryProgress=”80″              第二进度是80android:layout_width=”fill_parent”              进度条的显示长度是铺满父窗口android:layout_height=”wrap_content”></ProgressBar><?xml version=”1.0″ encoding=”utf-8″?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”android:orientation=”vertical”android:background=”#003399″android:layout_width=”fill_parent”android:layout_height=”fill_parent”><ProgressBar android:id=”@+id/ProgressBar04″style=”?android:attr/progressBarStyleHorizontal”android:layout_marginTop=”10dp”android:layout_marginLeft=”10dp”android:layout_marginRight=”10dp”android:max=”100″android:progress=”30″android:secondaryProgress=”80″android:layout_width=”fill_parent”android:layout_height=”wrap_content”></ProgressBar>
  3. </LinearLayout>
复制代码


  1. package android.basic.lesson11;

  2. import android.app.Activity;

  3. import android.os.Bundle;

  4. import android.view.Window;

  5. public class MainHelloProgressBar extends Activity {

  6. /** Called when the activity is first created. */

  7. @Override

  8. public void onCreate(Bundle savedInstanceState) {

  9. super.onCreate(savedInstanceState);

  10. //设置窗口进度条特性风格

  11. requestWindowFeature(Window.FEATURE_PROGRESS);

  12. setContentView(R.layout.main);

  13. //设置进度条可见性

  14. setProgressBarVisibility(true);

  15. //设置进度条进度值,要乘以100的

  16. setProgress(60*100);

  17. setSecondaryProgress(80*100);
  18. }

  19. }
复制代码



运行效果:
3.png
同学们可以使用下面的代码对,进度条进行一些操作练习:
private ProgressBar pb;                                                        //定义ProgressBar
pb = (ProgressBar) findViewById(R.id.ProgressBar01);
pb.incrementProgressBy(5);                                                 //ProgressBar进度值增加5
pb.incrementProgressBy(-5);                                                //ProgressBar进度值减少5
pb.incrementSecondaryProgressBy(5);                                 //ProgressBar第二个进度条 进度值增加5
pb.incrementSecondaryProgressBy(-5);                                //ProgressBar第二个进度条 进度值减少5
十二、SeekBar 拖动条 滑动条
SeekBar可以作为音乐播放器的进度指示和调整工具,音量调整工具等,SeekBar是ProgressBar的一个子类,下面我们用一个可以改变并显示当前进度的拖动条例子来演示一下它的使用:
1、main.xml
< ?xml version="1.0" encoding="utf-8"?>                               
2、java:
  1. package android.basic.lesson11;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.SeekBar;
  5. import android.widget.SeekBar.OnSeekBarChangeListener;
  6. import android.widget.TextView;
  7. import android.widget.Toast;

  8. public class MainHelloSeekBar extends Activity {
  9.         /** Called when the activity is first created. */
  10.         @Override
  11.         public void onCreate(Bundle savedInstanceState) {
  12.                 super.onCreate(savedInstanceState);
  13.                 setContentView(R.layout.main);

  14.                 //找到拖动条和文本框
  15.                 final SeekBar sb = (SeekBar) findViewById(R.id.SeekBar01);
  16.                 final TextView tv1 = (TextView) findViewById(R.id.TextView01);

  17.                 //设置拖动条的初始值和文本框的初始值
  18.                 sb.setMax(100);
  19.                 sb.setProgress(30);
  20.                 tv1.setText("当前进度:" + sb.getProgress());

  21.                 //设置拖动条改变监听器
  22.                 OnSeekBarChangeListener osbcl = new OnSeekBarChangeListener() {

  23.                         @Override
  24.                         public void onProgressChanged(SeekBar seekBar, int progress,
  25.                                         boolean fromUser) {
  26.                                 tv1.setText("当前进度:" + sb.getProgress());
  27.                                 Toast.makeText(getApplicationContext(), "onProgressChanged",
  28.                                                 Toast.LENGTH_SHORT).show();
  29.                         }

  30.                         @Override
  31.                         public void onStartTrackingTouch(SeekBar seekBar) {
  32.                                 Toast.makeText(getApplicationContext(), "onStartTrackingTouch",
  33.                                                 Toast.LENGTH_SHORT).show();
  34.                         }

  35.                         @Override
  36.                         public void onStopTrackingTouch(SeekBar seekBar) {
  37.                                 Toast.makeText(getApplicationContext(), "onStopTrackingTouch",
  38.                                                 Toast.LENGTH_SHORT).show();
  39.                         }

  40.                 };

  41.                 //为拖动条绑定监听器
  42.                 sb.setOnSeekBarChangeListener(osbcl);

  43.         }
  44. }
复制代码

3、运行程序:
4.png
5.png
十三、RatingBar 评分条
RatingBar评分条是SeekBar拖动条的子类。现阶段系统自带了3种样式,我们同样用例子来演示他的使用方法和属性设置:
1、main.xml的代码:

  1. <?xml version=”1.0″ encoding=”utf-8″?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”android:orientation=”vertical”android:layout_width=”fill_parent”android:layout_height=”fill_parent”><RatingBarandroid:id=”@+id/RatingBar01″android:layout_width=”wrap_content”android:rating=”3″                                             默认分值设为3android:layout_marginTop=”20dp”android:layout_height=”wrap_content”></RatingBar>
复制代码


2、在HelloRatingBar.java的代码里我们实现了3个评分条联动的功能:
  1. package android.basic.lesson11;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.RatingBar;
  5. import android.widget.RatingBar.OnRatingBarChangeListener;

  6. public class MainHelloRatingBar extends Activity {
  7.     /** Called when the activity is first created. */
  8.     @Override
  9.     public void onCreate(Bundle savedInstanceState) {
  10.         super.onCreate(savedInstanceState);
  11.         setContentView(R.layout.main);

  12.         //定义组件对象
  13.         final RatingBar rb1 = (RatingBar)findViewById(R.id.RatingBar01);
  14.         final RatingBar rb2 = (RatingBar)findViewById(R.id.RatingBar02);
  15.         final RatingBar rb3 = (RatingBar)findViewById(R.id.RatingBar03);

  16.         //定义评分监听器
  17.         OnRatingBarChangeListener orbcl= new OnRatingBarChangeListener(){

  18.                         @Override
  19.                         public void onRatingChanged(RatingBar ratingBar, float rating,
  20.                                         boolean fromUser) {
  21.                                                 switch(ratingBar.getId()){
  22.                                                 case R.id.RatingBar01:
  23.                                                         //把第一个评分条的值取出来设置给其他评分条
  24.                                                         rb2.setRating(rb1.getRating());
  25.                                                         rb3.setRating(rb1.getRating()*2);//十颗星所以乘以2
  26.                                                         break;
  27.                                                 case R.id.RatingBar02:
  28.                                                         rb1.setRating(rb2.getRating());
  29.                                                         rb3.setRating(rb2.getRating()*2);
  30.                                                         break;
  31.                                                 case R.id.RatingBar03:
  32.                                                         rb1.setRating(rb3.getRating()/2);
  33.                                                         rb2.setRating(rb3.getRating()/2);
  34.                                                         break;
  35.                                 }
  36.                         }
  37.         } ;

  38.         //绑定监听器
  39.         rb1.setOnRatingBarChangeListener(orbcl);
  40.         rb2.setOnRatingBarChangeListener(orbcl);
  41.         rb3.setOnRatingBarChangeListener(orbcl);
  42.     }
  43. }
复制代码

3、运行程序,点击评分条看看效果,使用左右键再试试
6.png 6
有兴趣的同学可以研究一下,如何更换评分条中的图片,譬如罢星星换成花朵什么的。
好,本讲就到这里。
原文地址:点击打开链接

这篇关于第十一讲:用户界面 View(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944701

相关文章

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

自定义view中常用到哪些方法作用分别是什么

目录 构造函数onMeasure(int widthMeasureSpec, int heightMeasureSpec)onDraw(Canvas canvas)onLayout(boolean changed, int left, int top, int right, int bottom)onTouchEvent(MotionEvent event)onSizeChanged(int

android 动画 ——视图动画(View Animation)

android动画分为视图动画(View Animation)、属性动画(Property Animation) 想看属性动画(Property Animation):请移步至http://blog.csdn.net/u013424496/article/details/51700312 这里我们来说下视图动画(View Animation)的纯代码写法,还有一种是xml调用, 对于xml调

Android 自定义View控件,实现跟随手指触摸移动的小球

Android UI组件是通过继承View类,然后绘制内容,比如ImageView,TextView等组件都是继承View类。 当Android系统提供的组件功能不能满足需求时,可以通过继承View类重写一个或多个方法,派生自定义的组件,View类常用重写方法: 1.构造器:View子类最基本的重写方法 protected voidonDraw(Canvas canvas) public

影响画布微信小程序canvas及skyline和webview用户界面布局的关键流程

影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 目录 影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 一、微信小程序canvas开发流程 1.1、官方指南 1.2、客制化开发 第一步:在 WXML 中添加 canvas 组件 第二步:获取 Canvas 对象和渲染上下文 第三步 画布#ID选择器执行回调——

《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:可移植的用户界面

 示例:可移植的用户界面 说明:   代码:   unit uWindow;   interface   uses Windows,SysUtils,Classes,Graphics;   type     TWindow = class;     TWindowImp = class;       {窗口视图}     TView = class

mac捕获android任意应用的view视图

一、uiautomatorviewer 介绍    iautomatorviewer是android SDK自带的一个元素定位工具。通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务。 使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。该工具位于SDK目录下的tools\bin子目录下。 二、效果图 下图演示 截取微信的 v

spring boot 的tomcat部署,自己的view层不做映射

需要复写继承该类SpringBootServletInitializer 的config方法,网上有些直接写主入口类的,部署是不对的。一定要复写config方法。