今天讲了四个组件: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 ActivityimplementsOnSeekBarChangeListener{
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