您的位置:首页 > 移动开发 > Android开发

Android之组件ProgressBar、SeekBar、ImageView、tabHost总结

2011-12-18 16:07 489 查看
今天讲了四个组件:ProgressBar、SeekBar、ImageView、tabHost

1、  ProgressBar进度条

     两种效果如图:

      

  

     <ProgressBar
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       />
   <ProgressBar
       android:id="@+id/progress1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
android:progress="10"//设置最初进度以是多少
       android:secondaryProgress="20" //设置第二阶进度以是多少,颜色比上面那个浅是第二进度    
       android:max="100"//设置最大值
       style="@android:style/Widget.ProgressBar.Horizontal"
//设置样式
        />

     当然还有另外一种是自己定义背景图标:



首先在drawable文件夹中建一个mybar.xml文件和两个图片分别是xin和xin1:

 <?xml version="1.0"encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@android:id/background"
   android:drawable="@drawable/xin"/>
    <item android:id="@android:id/progress"
   android:drawable="@drawable/xin1"/>
</layer-list>

以上是设置进度条的背景和进度的时候是什么状态!!

然后在布局文件中写:

<ProgressBar
       android:id="@+id/progress2"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp"    
       android:max="100"
       android:progressDrawable="@drawable/mybar"//引用mybar这个文件
       style="@android:style/Widget.ProgressBar.Horizontal"
        />

利用线程让进度条走起来:

主要代码:
      new Thread(new Runnable(){
         public void run() {
            while(i<progressMax){
                i=doWork();
                handler.post(new Runnable(){
                   public void run() {
                      progressBar1.setProgress(i);                               }
                });
                try {
                   Thread.sleep(100);
                } catch (InterruptedException e) {
                   e.printStackTrace();
                }
            }
         }
     }).start();

public int doWork(){
      Log.d("TAG", String.valueOf(i));
      i=i+10;
      if(i>=100){
         i=0;
      }
      return i;
  }

2、SeekBar拖动条

效果图:



    <SeekBar
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/seekbar"
       android:max="100"/>

星极拖动条:



<RatingBar
       android:id="@+id/ratingbar"
       android:layout_marginTop="20dp" 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"    
       android:numStars="5"
       android:max="255"
       android:progress="100"
      android:stepSize="0.5"/>

可以自己定义图片:



如果想实现以上,步骤如下:

首先:建一个styles.xml文件

   <?xml version="1.0"encoding="utf-8"?>
<resources>
   <style
       name="circleRatingBar"//取名字为circleRatingBar,在布局文件中要用
       parent="@android:style/Widget.RatingBar">
    <item        name="android:progressDrawable">@drawable/circle_bar</item>
    <item name="android:minHeight">45dp</item>
    <item name="android:maxHeight">45dp</item>
    </style>
</resources>

然后在drawable文件夹中建一个circle_bar.xml文件:

<?xml version="1.0"encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@+android:id/background"
   android:drawable="@drawable/circle"/>
    <item android:id="@+android:id/secondaryProgress"
   android:drawable="@drawable/circle2"/>
    <item android:id="@+android:id/progress"
       android:drawable="@drawable/circle1"/>
</layer-list>

最后在布局文件中引用风格:

<RatingBar
       android:id="@+id/rating"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:max="255"
       android:progress="100"
       android:layout_marginTop="20dp" 
       style="@style/circleRatingBar"//这一个是引用你定义的
     />

Ok,!!

下面是实现监听:

使类实现OnSeekBarChangeListener接口,自动覆盖方法

public class SeekBarDemo extends Activity implementsOnSeekBarChangeListener{
    protected void onCreate(Bundle savedInstanceState) {
       // TODO Auto-generatedmethod stub
        super.onCreate(savedInstanceState);
       setContentView(R.layout.seekbar_layout);
      
       SeekBar seekBar = (SeekBar) findViewById(R.id.seekbar);
       seekBar.setOnSeekBarChangeListener(this);
    }
 
    public void onProgressChanged(SeekBar arg0,
int
arg1, boolean arg2) {
    }
 
    public void onStartTrackingTouch(SeekBar arg0) {
       Log.d("TAG","startv="+arg0.getProgress());
    }
   
    public void onStopTrackingTouch(SeekBar seekBar) {
       Log.d("TAG","stopv="+seekBar.getProgress());
    }
}

3、 imageView

   显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。

<ImageView
       android:layout_width="fill_parent"
       android:layout_height="match_parent"
       android:src="@drawable/ic_launcher"
       android:background="#f00"
        android:scaleType="fitStart" />

 

注:ImageView只能显示整个图象

4、 TabHost

效果如图:



提供选项卡(Tab页)的窗口视图容器。此对象包含两个子对象:一组是用户可以选择指定Tab页的标签;另一组是FrameLayout用来显示该Tab页的内容。通常控制使用这个容器对象,而不是设置在子元素本身的值。(译者注:即使使用的是单个元素,也最好把它放到容器对象ViewGroup里)

使类直接继承ListActivity

public class TabDemoActivity extends TabActivity {
   TabHost tabHost=null;
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        tabHost=this.getTabHost();
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("拨号",getResources().getDrawable(R.drawable.dialing)).setContent(new Intent(this,DialingActivity.class)));
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("通话记录",getResources().getDrawable(R.drawable.call)).setContent(new Intent(this,CallActivity.class)));
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("通讯录",getResources().getDrawable(R.drawable.address_book)).setContent(new Intent(this,AddressBookActivity.class)));
        tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("图片收藏",getResources().getDrawable(R.drawable.collect)).setContent(new Intent(this,CollectActivity.class)));
       
    }
}

利用intent显示内容!!!!

这种方法最合理!

TabHostDemo.this.getTabHost().setCurrentTabByTag("tab2");
这个是跳到指定的tab项!!

实例代码综合下载地址:http://download.csdn.net/download/rhljiayou/3926080
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息