zoukankan      html  css  js  c++  java
  • 拖动条(SeekBar)的功能和用法

          拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等。

          SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定。

    • android:thumb:指定一个Drawable对象,该对象将作为自定义滑块。     

          为了让程序能响应拖动条滑块位置的改变,程序可以程序可以考虑为它绑定一个OnSeekBarChangeListener监听器。

          下面通过一个实例来示范SeekBar的功能和用法。

           实例:通过滑块来改变图片的透明度

           该程序的界面布局中需要两个组件:一个ImageView用于显示图片,一个SeekBar用于动态改变图片的透明度。界面布局文件如下。

           

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
      >
     <ImageView android:id="@+id/image"
                android:layout_width="fill_parent"
                android:layout_height="240dp"
                android:src="@drawable/lijiang"/>
     
    <!-- 定义一个拖动条,并改变它的滑块外观 -->
    <SeekBar android:id="@+id/seekbar"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:max="255"
             android:progress="255"
             android:thumb="@drawable/ic_launcher" />
    
    </LinearLayout>

         上面的程序中粗体字代码定义了该拖动条的最大值、当前值都是255,并通过指定android:thumb属性来改变拖动条上滑块的外观。

          该示例的主程序比较简单,程序只要为拖动条绑定一个监听器,当滑块位置发生改变时动态改变ImageView的透明度即可。主程序如下。

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.ImageView;
    import android.widget.SeekBar;
    import android.widget.SeekBar.OnSeekBarChangeListener;
    
    public class SeekBarTest extends Activity {
         
        ImageView image;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.seek_bar_test);
            image=(ImageView)findViewById(R.id.image);
            SeekBar seekBar=(SeekBar)findViewById(R.id.seekbar);
            seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    // TODO Auto-generated method stub
                    //动态改变图片的透明度
                    image.setAlpha(progress);
                }
    
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub
                    
                }
    
                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub
                    
                }
                
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.seek_bar_test, menu);
            return true;
        }
    
    }

         上面的粗体字代码就是监听拖动条上滑块位置发生改变的关键代码;当滑块位置发生改变时,ImageView的透明度将变为该拖动条的当前数值。运行上面的Activity代码将看到如下效果:

       

  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3386780.html
Copyright © 2011-2022 走看看