`
radio123
  • 浏览: 205727 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Android学习-组件3(选项卡,拖动条,进度条,图像视图) .

阅读更多

原文地址:http://blog.csdn.net/liu1028701143/article/details/7075272

一.选项卡:

TabHost组件,可以方便的放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件,通过这种方式就可以在一个容器里放置更多组件,;

TabHost仅仅是一个简单的容器,可以通过一下两种方法来创建选项卡,添加选项卡;

1.     newTabSpec(String tag):创建

2.     addTab(TabHost.TabSpectabSpec);添加选项卡;

使用TabHost的一般步骤为:

)1、在界面布局中定义TabHost组件,并为该组件定义该选项卡的内容,

)2、Activity应该继承TabActivity.

)3、调用TabActivity的getTabHost方法获取Tabhost对象。

)4、通过TabHost对象的方法来创建选项卡,添加选项卡;

 

下面通过一个实例来示范选项卡的用法;

程序布局文件:

  1. <?xml version="1.0"encoding="utf-8"?>  
  2.   
  3. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   
  5.     android:layout_width="match_parent"  
  6.   
  7.     android:layout_height="match_parent"  
  8.   
  9.     android:background="@drawable/gallery_selected_pressed">  
  10.   
  11. 第一个标签的内容  
  12.   
  13.     <LinearLayout  
  14.   
  15.        android:id="@+id/tab1"  
  16.   
  17.        android:layout_width="fill_parent"  
  18.   
  19.        android:layout_height="fill_parent"  
  20.   
  21.        android:orientation="vertical">  
  22.   
  23.     </LinearLayout>  
  24.   
  25. 第二个标签的内容  
  26.   
  27.     <LinearLayout  
  28.   
  29.        android:id="@+id/tab2"  
  30.   
  31.        android:layout_width="fill_parent"  
  32.   
  33.        android:layout_height="fill_parent"  
  34.   
  35.        android:orientation="vertical">  
  36.   
  37.     </LinearLayout>  
  38.   
  39. 第三个标签的内容  
  40.   
  41.     <LinearLayout  
  42.   
  43.        android:id="@+id/tab3"  
  44.   
  45.        android:layout_width="fill_parent"  
  46.   
  47.        android:layout_height="fill_parent"  
  48.   
  49.        android:orientation="vertical">  
  50.   
  51.     </LinearLayout>  
  52.   
  53.    
  54.   
  55. </TabHost>  


 

 

通过上面的布局文件定义我们创建了三个组件,可以为TabHost添加三个标签页。

JAVA代码:

 

  1. public class UIWorkActivity extends TabActivity {  
  2.   
  3.    TabHost tabhost = null;  
  4.   
  5.    
  6.   
  7.      
  8.   
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.   
  11.         super.onCreate(savedInstanceState);  
  12.   
  13.           
  14.   
  15.          
  16.   
  17.         tabhost = this.getTabHost();  
  18.   
  19.         LayoutInflater  in = LayoutInflater.from(this);  
  20.   
  21.         in.inflate(R.layout.main, tabhost.getTabContentView(),true);  
  22.   
  23.      
  24.   
  25.    
  26.   
  27.           
  28.   
  29.       tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("高兴",getResources().getDrawable(R.drawable.emo_im_laughing))  
  30.   
  31.            .setContent(R.id.tab1));  
  32.   
  33.       tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("难  
  34.   
  35.                        //添加标签图片的方法  
  36.   
  37. 过",getResources().getDrawable(R.drawable.emo_im_sad))  
  38.   
  39.            .setContent(R.id.tab2));  
  40.   
  41.       tabhost.addTab(tabhost.newTabSpec("tab3").setIndicator("兴奋",getResources().getDrawable(R.drawable.emo_im_money_mouth))  
  42.   
  43.            .setContent(R.id.tab3));  
  44.   
  45.       
  46.   
  47.       
  48.   
  49.         
  50.   
  51. }  

 

运行效果演示:

                              

 

二、进度条(ProgressBar):

进度条通常用于向用户显示某个耗时操作的完成的百分比,可以动态的显示进度,

1.通过style属性可以为progressBar指定风格,

                       
 

@android:style/Widget.ProgressBar.Horizontal

 
 

水平

 
 

@android:style/Widget.ProgressBar.Small

 
 

小进度条

 
 

@android:style/Widget.ProgressBar.inverse

 
 

普通大小

 
 

@android:style/Widget.ProgressBar.Large

 
 

大进度条

 
 

@android:style/Widget.ProgressBar.Large.inverse

 
 

大进度条

 
 

@android:style/Widget.ProgressBar.Small.inverse

 
 

小进度条

 

2.ProgressBar还支持以下的常用属性:

                           
 

Android:max

 
 

进度条的最大值

 
 

Android:progress

 
 

进度条已完成的进度值

 
 

Android:progressDrawable

 
 

进度条轨道的绘制形式

 
 

Android:indeterminate

 
 

属性设为true:设置进度条不精确显示进度

 
 

Android:indeterminateDrawable

 
 

设置不显示进度的进度条的Drawable对象

 
 

Android:indeterminateDuration

 
 

设置不精确显示进度的持续时间

 
 

XML属性值

 
 

说明

 

3.ProgressBar提供了一下方法设置进度的完成百分比;

1、setProgress(int) 设置完成进度的百分比;

2、incrementProgressBy(int):设置进度条的进度增加或减少,当参数为正数是进度增加,当为负值是进度减少;

 

下面用实例来说明一下ProgressBar的使用:

 

  1. public class proessDemoextends Activity {  
  2.   
  3.    ProgressBar bar = null;  
  4.   
  5.    int i = 0;  
  6.   
  7.    int barmax = 0;  
  8.   
  9.    Handler handler = new Handler();  
  10.   
  11.    
  12.   
  13.    public void onCreate(Bundle savedInstanceState) {  
  14.   
  15.       super.onCreate(savedInstanceState);  
  16.   
  17.       setContentView(R.layout.progressbar);  
  18.   
  19.    
  20.   
  21.       findViews();  
  22.   
  23.    
  24.   
  25.    }  
  26.   
  27.    private void findViews() {  
  28.   
  29.    
  30.   
  31.       bar = (ProgressBar) this.findViewById(R.id.bar2);  
  32.   
  33.       bar.setMax(1000);  
  34.   
  35.       barmax = bar.getMax();  
  36.   
  37.    
  38.   
  39.       new Thread(new Runnable() {  
  40.   
  41.    
  42.   
  43.         public void run() {  
  44.   
  45.            while (i < barmax) {  
  46.   
  47.    
  48.   
  49.               i = dowork();  
  50.   
  51.    
  52.   
  53.               handler.post(new Runnable() {  
  54.   
  55.                  public void run() {  
  56.   
  57.    
  58.   
  59.                     bar.setProgress(i);  
  60.   
  61.                  }  
  62.   
  63.               });  
  64.   
  65.               try {  
  66.   
  67.                  Thread.sleep(50);  
  68.   
  69.               } catch (InterruptedException e) {  
  70.   
  71.                 
  72.   
  73.                  e.printStackTrace();  
  74.   
  75.               }  
  76.   
  77.            }  
  78.   
  79.    
  80.   
  81.         }  
  82.   
  83.    
  84.   
  85.       }).start();  
  86.   
  87.    
  88.   
  89.    }  
  90.   
  91.    
  92.   
  93.    public int dowork() {  
  94.   
  95.    
  96.   
  97.       return i += 1;  
  98.   
  99.    
  100.   
  101.    }  


 

Xml布局文件的配置:

  1. <?xml version="1.0"encoding="utf-8"?>  
  2.   
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   
  5.     android:layout_width="fill_parent"  
  6.   
  7.     android:layout_height="fill_parent"  
  8.   
  9.     android:orientation="vertical" >  
  10.   
  11.    
  12.   
  13.     <TextView  
  14.   
  15.        android:layout_width="fill_parent"  
  16.   
  17.        android:layout_height="wrap_content"  
  18.   
  19.        android:text="进度条演示" />  
  20.   
  21.    
  22.   
  23.     <ProgressBar   
  24.   
  25.        android:id="@+id/bar1"  
  26.   
  27.        android:layout_width="wrap_content"  
  28.   
  29.        android:layout_height="wrap_content"  
  30.   
  31.        android:max="530"  
  32.   
  33.        android:progress="100"  
  34.   
  35.        
  36.   
  37.        />  
  38.   
  39.    
  40.   
  41.     <ProgressBar  
  42.   
  43.        android:id="@+id/bar2"  
  44.   
  45.        style="@android:style/Widget.ProgressBar.Small"  
  46.   
  47.          
  48.   
  49.        android:layout_marginTop="30dp"  
  50.   
  51.        android:layout_width="fill_parent"  
  52.   
  53.        android:layout_height="wrap_content"  
  54.   
  55.        android:max="530"  
  56.   
  57.        android:progress="100"  
  58.   
  59.        android:secondaryProgress="300"/>  
  60.   
  61.    
  62.   
  63. </LinearLayout>  


 

运行效果演示:

 

 

三、拖动条(SeekBar):

拖动条和进度条很相似,知识进度是通过颜色填充来显示进度完成的程度,而拖动条是则通过滑块的位置来识别标识,

下面来通过一个实例来说明拖动条的作用,

Xml:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.   
  3.     android:layout_width="match_parent"  
  4.   
  5.     android:layout_height="match_parent"  
  6.   
  7.     android:orientation="vertical" >  
  8.   
  9.    
  10.   
  11.       
  12.   
  13.     <TextView   
  14.   
  15.        android:layout_width="fill_parent"  
  16.   
  17.        android:layout_height="wrap_content"  
  18.   
  19.        android:text="seekbar演示"  
  20.   
  21.          
  22.   
  23.          
  24.   
  25.        />  
  26.   
  27. <SeekBar   
  28.   
  29.         android:layout_width="fill_parent"  
  30.   
  31.        android:layout_height="wrap_content"  
  32.   
  33.        android:max="1000"  
  34.   
  35.        android:id="@+id/seekbar"    
  36.   
  37.       
  38.   
  39.     />  
  40.   
  41.       
  42.   
  43. </LinearLayout>  


 

 

Java文件:

  1. public class SeekbarDemo extends Activity implements OnSeekBarChangeListener {  
  2.   
  3.    
  4.   
  5.    SeekBar seekbar = null;  
  6.   
  7.    
  8.   
  9.    protected void onCreate(Bundle savedInstanceState) {  
  10.   
  11.    
  12.   
  13.       super.onCreate(savedInstanceState);  
  14.   
  15.       this.setContentView(R.layout.seekbar);  
  16.   
  17.    
  18.   
  19.       findViews();  
  20.   
  21.    }  
  22.   
  23.    
  24.   
  25.    private void findViews() {  
  26.   
  27.       seekbar = (SeekBar) this.findViewById(R.id.seekbar);  
  28.   
  29.       seekbar.setOnSeekBarChangeListener(this);  
  30.   
  31.    }  
  32.   
  33.    
  34.   
  35.    public void onProgressChanged(SeekBar seekBar, int progress,  
  36.   
  37.         boolean fromUser) {  
  38.   
  39.    
  40.   
  41.    }  
  42.   
  43.    
  44.   
  45.    public void onStartTrackingTouch(SeekBar seekBar) {  
  46.   
  47.    
  48.   
  49.       Log.d("TAG", String.valueOf(seekbar.getProgress()));  
  50.   
  51.    
  52.   
  53.    }  
  54.   
  55.    
  56.   
  57.    public void onStopTrackingTouch(SeekBar seekBar) {  
  58.   
  59.       Log.d("TAG", String.valueOf(seekbar.getProgress()));  
  60.   
  61.    
  62.   
  63.    }  
  64.   
  65.    
  66.   
  67. }  


 

运行效果:

移动进度条

 

日志信息输出的变化:

 

 

 

四、图像视图:(ImageView)

ImageView是继承View的组件,主要功能是显示图片,并且任何的Drawable对象都可以使用ImageView来显示;

 

下面是ImageView支持的XML属性和相关方法,

                                   
 

Xml属性

 
 

     相关method

 
 

      说明

 
 

android:  adjustViewBounds

 
 

setAdjustViewBounds(boolean)

 
 

设置是否需要调整自己边界

 
 

android:maxHeight

 
 

SetMaxwidth(int)

 
 

设置最大高度

 
 

android:maxWidth

 
 

SetMaxHeight(int)

 
 

设置最大宽度

 
 

android:scaleType

 
 

SetScaleType(ImageViewScaleType)

 
 

设置显示图片如何移动或缩放以适应ImageView的尺寸

 
 

android:src

 
 

setImageResource(int)

 
 

设置显示图片的ID

 

实例演示:

XML文件,

  1. <ImageView   
  2.   
  3.        android:layout_width="fill_parent"  
  4.   
  5.        android:layout_height="300dp"  
  6.   
  7.        android:src="@drawable/ic_launcher"  
  8.   
  9.        android:background="#cccccc"  
  10.   
  11.        android:scaleType="fitCenter"  
  12.   
  13.        android:id="@+id/imageview1"  
  14.   
  15.        />  
  16.   
  17.       
  18.   
  19.     <ImageView   
  20.   
  21.        android:layout_width="100dp"  
  22.   
  23.        android:layout_height="100dp"  
  24.   
  25.        android:background="#cccccc"  
  26.   
  27.        android:scaleType="fitStart"  
  28.   
  29.        android:id="@+id/imageview2"  
  30.   
  31.        android:layout_marginTop="20dp"  
  32.   
  33.        />  
  34.   
  35.       


 

 

Java文件:

  1. public class ImageDemo extends Activity implements OnTouchListener {  
  2.   
  3.    
  4.   
  5.    ImageView imageView1, imageView2;  
  6.   
  7.    
  8.   
  9.    protected void onCreate(Bundle savedInstanceState) {  
  10.   
  11.    
  12.   
  13.       super.onCreate(savedInstanceState);  
  14.   
  15.       this.setContentView(R.layout.image);  
  16.   
  17.    
  18.   
  19.       findViews();  
  20.   
  21.    }  
  22.   
  23.    
  24.   
  25.    private void findViews() {  
  26.   
  27.       imageView1 = (ImageView) this.findViewById(R.id.imageview1);  
  28.   
  29.       imageView2 = (ImageView) this.findViewById(R.id.imageview2);  
  30.   
  31.    
  32.   
  33.       imageView1.setOnTouchListener(this);  
  34.   
  35.    
  36.   
  37.    }  
  38.   
  39.    
  40.   
  41.    public boolean onTouch(View v, MotionEvent event) {  
  42.   
  43.       float scale = 412 / 320;  
  44.   
  45.    
  46.   
  47.       int x = (int) (event.getX() * scale);  
  48.   
  49.       int y = (int) (event.getY() * scale);  
  50.   
  51.       int width = (int) (100 * scale);  
  52.   
  53.       int height = (int) (100 * scale);  
  54.   
  55.    
  56.   
  57.       BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1  
  58.   
  59.            .getDrawable();  
  60.   
  61.       imageView2.setImageBitmap(Bitmap.createBitmap(  
  62.   
  63.            bitmapDrawable.getBitmap(), x, y, width, height));  
  64.   
  65.    
  66.   
  67.       return false;  
  68.   
  69.    }  
  70.   
  71.    
  72.   
  73. }  


 

运行效果:

 

分享到:
评论

相关推荐

    在Labview选项卡中加滚动条

    在Labview中,选项卡是一种用户界面(UI)元素,它允许用户在不同的视图或工作区之间切换。这对于组织复杂的程序界面和提供多任务操作非常有用。然而,当选项卡内包含大量内容时,可能需要滚动条来帮助用户浏览和...

    史上最全的ios开发源码

    弹出视图-Patterned Alert View 弹出视图-Table Alert 弹出视图类--Blur ModalView 弹出视图类--Depth View 弹出视图类--FWTPopover 弹出视图类--icon sheet 弹出视图类--Informatic Toolbar 弹出视图类--...

    8Android常用UI控 8Android常用UI控件编程1-17-有源码.zip件编程1-17-有源码.zip

    14. **底部导航栏(BottomNavigationView)**:在屏幕底部显示多个选项卡,方便在不同页面间切换。 15. **浮动动作按钮(FloatingActionButton)**:设计用于执行主要操作,通常位于屏幕右下角,`setImageResource()`...

    Android应用源码之一个Demo搞定30个控件-IT计算机-毕业设计.zip

    - **TabLayout**: 选项卡布局,用于切换不同内容区域。 - **BottomNavigationView**: 底部导航栏,提供多个页面间的快速切换。 4. **自定义控件**: - 自定义View:开发者可以创建自己的视图类,实现特定功能或...

    Winform开发全套31个UI组件开源共享]

    26. TabControl:选项卡控件,可以在多个页面间切换。 27. Form:应用程序的主要窗口,可以包含其他控件。 28. ToolStripProgressBar:工具栏中的进度条。 29. ToolStripStatusLabel:工具栏中的状态标签。 30. ...

    Android手机应用程序开发

    - **拖动条**(SeekBar):与进度条类似,但用户可以通过拖动滑块手动调整值,常见于音量控制、亮度调节等场景。 - **星级评分条**(RatingBar):允许用户对内容进行评分,通常为半星或全星制,常用于电影评价、...

    android常见控件和使用方法

    选项卡(TabHost/TabLayout)** - **功能介绍**:`TabHost`和`TabLayout`组件用于创建多标签界面,每个标签都可以关联不同的内容或页面。 **5. 图像切换器(ImageSwitcher)** - **功能介绍**:`ImageSwitcher`...

    Android开发与应用——张荣,原书配套课件

    4.3.4 选项卡 4.4 提示框与警告对话框 4.4.1 消息提示框 4.4.2 警告对话框 4.5 小结 练习 第5章 视图界面布局 5.1 界面布局设计 5.1.1 线性布局 5.1.2 表格布局 5.1.3 帧布局 5.1.4 相对布局 ...

    Android控件及布局的使用

    - **Tab**:选项卡,用于组织不同类型的视图。 ##### 4.3.23 Spinner - **Spinner**:下拉框,用户可以选择一个选项。 ##### 4.3.24 Chronometer - **Chronometer**:计时器,记录时间的流逝。 ##### 4.3.25 ...

    Android入门

    23. **选项卡(TabHost)** - 显示多个标签页。 - 每个标签页可以包含不同的内容。 24. **Menu菜单详解** - 选项菜单和子菜单:主菜单和其下的二级菜单。 - 多选菜单和单选菜单:控制用户的选择模式。 - 上下文...

    Flex UI组件使用全集

    - **TabNavigator**: 类似于AJAX的选项卡导航容器。 - **Title**: 标题容器。 - **TitleWindow**: 带有标题栏的窗口容器。 - **VBox**: 垂直方向布局的容器。 - **VDivideBox**: 垂直方向可调整大小的容器。 - **...

    安卓Android源码——一个Demo搞定30个控件.zip

    在安卓(Android)开发中,理解并掌握各种控件的使用是至关重要的。这个压缩包“安卓Android源码——一个Demo搞定30个控件.zip”显然是为了帮助开发者快速熟悉和应用Android SDK中的多种UI元素。它通过一个单一的...

    疯狂Android讲义源码

     2.4.7 选项卡(TabHost)的功能和  用法 93  2.4.8 滚动视图(ScrollView)的  功能和用法 95  2.4.9 列表视图(ListView和  ListActivity) 95  2.4.10 可展开的列表组件(ExpandableListView) 101  ...

    jquery-ui-1.8.custom.rar

    3. **Tabs(选项卡)**:将内容分隔到不同的选项卡中,用户可以轻松地在多个视图间切换,提高用户体验。 4. **Slider(滑块)**:提供了一种直观的方式来调整数值,常用于音量控制、进度条等场景。 5. **...

    Android开发实例大全.pdf

    ### Android开发实例大全知识点总结 #### 第一章 UI布局开发实例集锦 1. **线性布局LinearLayout**:用于按照水平或垂直方向线性排列控件,是布局中最基本的组件。 2. **相对布局RelativeLayout**:通过相对定位的...

    安卓作业(情景模式)

    - **TabHost**:用于创建选项卡式界面,每个选项卡代表一种情景模式。 - **LinearLayout**:常用于创建垂直或水平排列的视图。在这个案例中,`orientation="vertical"`表示子视图按垂直方向堆叠。 - **...

    android安卓笔记

    - **SeekBar-拖动条**:`SeekBar`提供了一个滑动条,用于调节数值。 - **RatingBar-评分控件**:`RatingBar`提供了一个星级评分控件。 - **WebView-浏览器**:`WebView`是一个嵌入式的浏览器组件,可以用来显示网页...

Global site tag (gtag.js) - Google Analytics