转载

Android View 之进度条+拖动条+星级评论条....

PS:将来的你会感谢现在奋斗的自己....

学习内容:

1.进度条

2.拖动条

3.星级评论条

1.进度条...    

进图条这东西想必大家是很熟悉的...为了使用户不会觉得应用程序死掉了,因此为之设置一个进度条使应用程序的运行状态更好的反馈给客户...这也就是进度条的作用...因此一般的应用程序都会加入进度条...进度条分为圆形进度条和线性的进度条...目的都是一样的,只是展示的效果是不同的...用代码讲解一下...

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="vertical">   <TextView     android:id="@+id/TextView_1"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="圆形进度条..."    android:textSize="18sp"/>   <ProgressBar     android:id="@+id/progress_1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    style="?android:attr/progressBarStyleLarge"/>   <TextView     android:id="@+id/TextView_2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="圆形小进度条..."    android:textSize="18sp"/>   <ProgressBar     android:id="@+id/progress_2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    style="?android:attr/progressBarStyleSmall"/>   <TextView     android:id="@+id/TextView_3"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="水平進度條"    android:textSize="18sp"/>   <ProgressBar     android:id="@+id/progressbar_3"    android:layout_width="300dp"    android:layout_height="wrap_content"    android:layout_gravity="center_vertical"    android:max="200"    android:progress="50"    android:secondaryProgress="75"    style="?android:attr/progressBarStyleHorizontal"/>   <LinearLayout     android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="wrap_content">    <Button      android:id="@+id/Button_1"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="增加..."/>    <Button      android:id="@+id/Button_2"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="減少..."/>   </LinearLayout> </LinearLayout> 

说一下细节的东西...这里style属性表示的是进度条是什么类型的...max表示进度条的最大值...progress表示第一级进度条的初始值...secondaryprogress表示第二级进度条的初始值...大家运行一下就能看得出来哪个是第一级哪个是第二级...然后定义了一个水平进度条,使用两个按钮来控制进度条的增加和减少...

package com.example.android_view; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.Window; import android.widget.ProgressBar; import android.widget.Button; public class MainActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   requestWindowFeature(Window.FEATURE_PROGRESS);//设置标题栏的进度条...   setContentView(R.layout.activity_main);   setProgressBarVisibility(true);//设置进度条的可见性,true可见 ,false不可见..   final ProgressBar progressbar_h=(ProgressBar)findViewById(R.id.progressbar_3);//获取水平进度条的id值..        setProgress(progressbar_h.getProgress()*100);//因为标题栏的进度条也是水平进度条,因此可以这样进行赋值....   setSecondaryProgress(progressbar_h.getProgress()*100);//设置标题栏的二级进度值..   Button but=(Button)findViewById(R.id.Button_1);   but.setOnClickListener(new Button.OnClickListener(){    @Override    public void onClick(View v) {     // TODO Auto-generated method stub     progressbar_h.incrementProgressBy(5);//当点击按钮时每次进度条的值都会增加5...但是要*100...     setProgress(progressbar_h.getProgress()*100);    }   });   Button but_1=(Button)findViewById(R.id.Button_2);   but_1.setOnClickListener(new Button.OnClickListener(){    @Override    public void onClick(View v) {     // TODO Auto-generated method stub     progressbar_h.incrementProgressBy(-5);//这个就是-5了...同时也要*100...     setProgress(progressbar_h.getProgress()*100);    }    });    }     @Override  public boolean onCreateOptionsMenu(Menu menu) {   // Inflate the menu; this adds items to the action bar if it is present.   getMenuInflater().inflate(R.menu.main, menu);   return true;  }   } 

2.拖动条...

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="vertical">     <TextView       android:id="@+id/myTextView"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:textSize="16sp"/>     <SeekBar       android:id="@+id/seekbar_1"      android:layout_width="fill_parent"      android:layout_height="wrap_content"/> </LinearLayout> 

java文件...

package com.example.android_view; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity {  private TextView tv;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   tv=(TextView)findViewById(R.id.myTextView);   SeekBar ser=(SeekBar)findViewById(R.id.seekbar_1);   ser.setProgress(60);   tv.setText("初始值为:"+60);   /*发现了个好玩的事情,就是注册监听有很多种写法...    * OnSeekBarChangeListener osbcl=new OnSeekBarChangeListener(){    *  内部方法...    * }    * OnSeekBarChangeListener osbcl=new SeekBar.OnSeekBarChangeListener(){    *  内部方法...    * }    * OnSeekBarChangeListener osbcl=(new SeekBar.OnSeekBarChangeListener(){    *  内部方法...    * });    * 上面这三种需要注册...ser.setOnSeekBarChangeListener(osbcl); 就可以使用了...    * ser.OnSeekBarChangeListener =(new SeekBar.OnSeekBarChangeListener(){    *  内部方法...    * });    * */   //这个监听内部有三种方法...都要进行重写...   OnSeekBarChangeListener osbcl=new OnSeekBarChangeListener() {    //停止拖动时的方法...    @Override    public void onStopTrackingTouch(SeekBar seekBar) {     // TODO Auto-generated method stub     MainActivity.this.tv.append("停止值为:"+seekBar.getProgress()+"/n");//字符串追加函数...将这些字符串追加到tv中...    }    //开始拖动时的方法...    @Override      public void onStartTrackingTouch(SeekBar seekBar) {     // TODO Auto-generated method stub     MainActivity.this.tv.append("开始值为"+seekBar.getProgress()+"/n");    }    //改变后的方法...    @Override    public void onProgressChanged(SeekBar seekBar, int progress,      boolean fromUser) {     // TODO Auto-generated method stub     MainActivity.this.tv.append("正在拖动,当前值为:"+seekBar.getProgress()+"/n");    }   };   ser.setOnSeekBarChangeListener(osbcl);  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {   // Inflate the menu; this adds items to the action bar if it is present.   getMenuInflater().inflate(R.menu.main, menu);   return true;  } } 

3.星级评分条...

评论条这东西,只要是和客户利益挂钩的就一定会有..评论这个东西...星级评论条是非常常见的..比如说我们在淘宝买的东西到了以后就会给卖家一个评价,这个评价是星级+文字进行评价...使更多的消费者去了解卖家的状况...从而形成信息交互...

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="vertical">  <!--rating="3"表示初始值設置為3..-->     <RatingBar       android:id="@+id/rat_1"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:rating="3"/>        <RatingBar       android:id="@+id/rat_2"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:rating="3"/>     <RatingBar       android:id="@+id/rat_3"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:rating="3"/>    </LinearLayout> 

java文件...

package android.basic.lesson11; import android.app.Activity; import android.os.Bundle; import android.widget.RatingBar; import android.widget.RatingBar.OnRatingBarChangeListener; public class MainHelloRatingBar extends Activity {     @Override     public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  //定义组件对象  final RatingBar rb1 = (RatingBar)findViewById(R.id.rat_1);  final RatingBar rb2 = (RatingBar)findViewById(R.id.rat_2;  final RatingBar rb3 = (RatingBar)findViewById(R.id.rat_3);  //定义评分监听器  OnRatingBarChangeListener orbcl= new OnRatingBarChangeListener(){       @Override       public void onRatingChanged(RatingBar ratingBar, float rating,         boolean fromUser) {          switch(ratingBar.getId()){          case R.id.RatingBar01:           //把第一个评分条的值取出来设置给其他评分条           rb2.setRating(rb1.getRating());           rb3.setRating(rb1.getRating()*2);//十颗星所以乘以2          break;          case R.id.RatingBar02:           rb1.setRating(rb2.getRating());           rb3.setRating(rb2.getRating()*2);          break;          case R.id.RatingBar03:           rb1.setRating(rb3.getRating()/2);           rb2.setRating(rb3.getRating()/2);          break;    }     }      } ;      //绑定监听器      rb1.setOnRatingBarChangeListener(orbcl);      rb2.setOnRatingBarChangeListener(orbcl);      rb3.setOnRatingBarChangeListener(orbcl);  }     } 

总而言之,无论是进度条,拖动条,还是评分条...在应用程序中被广泛的应用...因此需要熟练掌握...

PS:最近打算做个闹钟app...祝自己成功....

正文到此结束
Loading...