android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用

 



先让大家看一个效果图

android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用_第1张图片、、

android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用_第2张图片

android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用_第3张图片

android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用_第4张图片

怎么样,效果炫吗?

让我们来分析一下,这种效果怎么样才能实现呢?

首先我们注意一下,上方几个横着切换的功能是TabHost

TabHost

android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用_第5张图片

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

内部类

interfaceTabHost.OnTabChangeListener    

接口定义了当选项卡更改时被调用的回调函数

 

interface TabHost.TabContentFactory  

当某一选项卡被选中时生成选项卡的内容

 

class TabHost.TabSpec     

单独的选项卡,每个选项卡都有一个选项卡指示符,内容和tag标签,以便于记录.

 

公共方法

public void addTab(TabHost.TabSpec tabSpec)

新增一个选项卡

参数

tabSpec   指定怎样创建指示符和内容.

view plain print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent" >  
  5.   
  6.     <LinearLayout android:id="@+id/tab1" android:orientation="vertical"  
  7.         android:layout_width="fill_parent" android:layout_height="fill_parent">  
  8.         <Button android:id="@+id/button" android:layout_width="fill_parent"  
  9.             android:layout_height="wrap_content" android:text="切换到第3个标签" />  
  10.         <ImageView  android:layout_width="fill_parent"  
  11.             android:layout_height="wrap_content" android:src="@drawable/background" android:layout_marginTop="30dp"/>  
  12.     </LinearLayout>  
  13. </TabHost>  

view plain print ?
  1. import android.app.TabActivity;  
  2. import android.content.Intent;  
  3. import android.os.Bundle;  
  4. import android.view.LayoutInflater;  
  5. import android.widget.TabHost;  
  6.   
  7. public class TableHostTest extends TabActivity {  
  8.   
  9.     private TabHost tabHost = null;  
  10.   
  11.     @Override   
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         tabHost = this.getTabHost();  
  15.         LayoutInflater inflater = LayoutInflater.from(this);  
  16.         /*注意true的作用*/  
  17.         inflater.inflate(R.layout.tablehost, tabHost.getTabContentView(),true);  
  18.         tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("界面1").setContent(R.id.tab1));  
  19.         tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("界面2").setContent(new Intent(this,SeekBarDemo.class)));  
  20.         tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("界面3").setContent(new Intent(this,UITest4Activity.class)));  
  21.     }  
  22.       
  23. }  


进度条显示:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="进度条演示" /> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:max="1000" android:progress="100" android:id="@+id/progressbar1" /> <ProgressBar style="@android:style/Widget.ProgressBar.Horizontal" android:layout_marginTop="30dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="1000" android:progress="500" android:secondaryProgress="300" android:id="@+id/progressbar2" /> </LinearLayout>


view plain print ?
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.os.Handler;  
  4. import android.util.Log;  
  5. import android.widget.ProgressBar;  
  6.   
  7. public class ProgressBarDemo extends Activity{  
  8.       
  9.     ProgressBar progressbar = null;  
  10.     static int i = 0;  
  11.     int progressbarMax = 0;  
  12.   
  13.     Handler handler = new Handler();  
  14.       
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.progressbar_layout);  
  18.           
  19.         findViews();  
  20.     }  
  21.   
  22.     private void findViews() {  
  23.         progressbar = (ProgressBar) this.findViewById(R.id.progressbar2);  
  24.         progressbar.setMax(1000);  
  25.         progressbarMax = progressbar.getMax();  
  26.           
  27.         new Thread(new Runnable(){  
  28.               
  29.             public void run(){  
  30.                 while(i< progressbarMax){  
  31.                     i=doWork();  
  32.                       
  33.                     handler.post(new Runnable(){  
  34.                       
  35.                         public void run(){  
  36.                             progressbar.setProgress(i);  
  37.                         }  
  38.                     });  
  39.                     try {  
  40.                         Thread.sleep(50);  
  41.                     } catch (InterruptedException e) {  
  42.                         // TODO Auto-generated catch block  
  43.                         e.printStackTrace();  
  44.                     }  
  45.                 }  
  46.             }  
  47.         }).start();  
  48.   
  49.     }  
  50.       
  51.     public int doWork(){  
  52.         Log.d("TAG", String.valueOf(i));  
  53.         return ++i;  
  54.     }  
  55.       
  56. /*  //不能用!!!! 
  57.     public void run(){ 
  58.         Log.d("TAG","thread starting..."); 
  59.          
  60.         while(i++ < progressbarMax){ 
  61.             progressbar.setProgress(i); 
  62.             try { 
  63.                 Thread.sleep(50); 
  64.             } catch (InterruptedException e) { 
  65.                 // TODO Auto-generated catch block 
  66.                 e.printStackTrace(); 
  67.             } 
  68.         } 
  69.     } 
  70.     */  
  71. }  



下面用ImageView实现图片预览功能


view plain print ?
  1. import android.app.Activity;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.drawable.BitmapDrawable;  
  4. import android.os.Bundle;  
  5. import android.view.MotionEvent;  
  6. import android.view.View;  
  7. import android.view.View.OnTouchListener;  
  8. import android.widget.ImageView;  
  9.   
  10. public class ImageViewDemo extends Activity implements OnTouchListener {  
  11.   
  12.     ImageView imageView1, imageView2;  
  13.   
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         // TODO Auto-generated method stub  
  16.         super.onCreate(savedInstanceState);  
  17.         this.setContentView(R.layout.imageview_layout);  
  18.   
  19.         findViews();  
  20.     }  
  21.   
  22.     private void findViews() {  
  23.         imageView1 = (ImageView) findViewById(R.id.img1);  
  24.         imageView2 = (ImageView) findViewById(R.id.img2);  
  25.           
  26.         imageView1.setOnTouchListener(this);  
  27.   
  28.     }  
  29.   
  30.     public boolean onTouch(View v, MotionEvent event) {  
  31.         float scale = 412 / 320;  
  32.   
  33.         int x = (int) (event.getX() * scale);  
  34.         int y = (int) (event.getY() * scale);  
  35.           
  36.         //尝试考虑解决边界问题  
  37.         int width = (int) (100 * scale);  
  38.         int height = (int) (100 * scale);  
  39.   
  40.         BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1.getDrawable();  
  41.           
  42.         imageView2.setImageBitmap(Bitmap.createBitmap(bitmapDrawable.getBitmap(),  
  43.                 x,y, width, height));  
  44.           
  45.         return false;  
  46.     }  
  47.   
  48. }  



view plain print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <ImageView  
  8.         android:id="@+id/img1"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="300dp"  
  11.         android:background="#cccccc"  
  12.         android:src="@drawable/pig" />  
  13.   
  14.     <ImageView  
  15.         android:id="@+id/img2"  
  16.         android:layout_width="100dp"  
  17.         android:layout_height="100dp"  
  18.         android:background="#cccccc"  
  19.         android:scaleType="fitStart"  
  20.         android:layout_marginTop="20dp"  
  21.         />  
  22.   
  23. </LinearLayout>  

调节音量等的控制条:

view plain print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <SeekBar   
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:max="1000"  
  11.         android:id="@+id/seekbar"  
  12.         />  
  13.   
  14. </LinearLayout>  

view plain print ?
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.util.Log;  
  4. import android.widget.SeekBar;  
  5. import android.widget.SeekBar.OnSeekBarChangeListener;  
  6.   
  7. public class SeekBarDemo extends Activity implements OnSeekBarChangeListener {  
  8.   
  9.     SeekBar seekbar = null;  
  10.   
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         // TODO Auto-generated method stub  
  13.         super.onCreate(savedInstanceState);  
  14.         this.setContentView(R.layout.seekbar_layout);  
  15.   
  16.         findViews();  
  17.     }  
  18.   
  19.     private void findViews() {  
  20.         seekbar = (SeekBar) this.findViewById(R.id.seekbar);  
  21.         seekbar.setOnSeekBarChangeListener(this);  
  22.     }  
  23.   
  24.     @Override  
  25.     public void onProgressChanged(SeekBar seekBar, int progress,  
  26.             boolean fromUser) {  
  27.         Log.d("TAG""changed: "+  String.valueOf(seekBar.getProgress()));  
  28.           
  29.     }  
  30.   
  31.     @Override  
  32.     public void onStartTrackingTouch(SeekBar seekBar) {  
  33.         Log.d("TAG""start: "+  String.valueOf(seekBar.getProgress()));  
  34.           
  35.     }  
  36.   
  37.     @Override  
  38.     public void onStopTrackingTouch(SeekBar seekBar) {  
  39.         Log.d("TAG""stop: "+  String.valueOf(seekBar.getProgress()));  
  40.           
  41.     }  
  42.   
  43. }  

你可能感兴趣的:(android应用开发之ImageView,SeekBar,TableHost,ProgressBar的使用)