Android 控件的使用


控件的使用 韩 超 @ Android 经典应用 1 Android 中控件的层次结构 2 文本类控件 3 图像类控件 4 进度条控件 5 自定义的控件 1 Android 中控件的层次结构 android.view.View 类(视图 类)呈现了最基本的 UI 构造块。一个视图 占据屏幕上的一个方形区域,并且负责绘制 和事件处理。 View 是 widgets 的基类 ,常用来创建交互式的图形用户界面 ( GUI )。 View ImageView ProgressBar ViewStub ... ... ImageButton Widget SurfaceViewTextView EditTextButton CheckedTextView CompoundButton CheckBox RadioButton ToggleButton ZoomButton AbsSeekBar RatingBar SeekBar AutoCompleteTextView android.view.View 的扩展者通常包含在 android.Widget 包中,也就是在 UI 中使用的控 件。这些 android.view.View 的扩展者,通常 可以在应用程序中直接使用,也可以应用程序再扩 展一次使用。 在 Android 中各种 UI 类的名称也是它们在布 局文件 XML 中使用的标签名称。 Android 中常使用的基本控件包括:文本框 、 视图类有众多的扩展者,包括文本视图 ( TextView )、按钮( Button )、图像视图 ( ImageView )、图像按钮 ( ImageButton )、进度条 ( ProgressBar )等。 这些控件一般在布局文件中定义标签,在程序 中的使用包括接收其事件和控制其行为两个方面的 内容。 2 文本类控件 TextView 表示一个文本的区域,它有系列的继承者: Button :按钮 EditText :可编辑文本 Chronometer :计数器 CheckedTextView :选择文本 DigitalClock :数字时钟 TextView 类的另外一个重要的扩展者 是可编辑文本区域( EditText )。 AutoCompleteTextView MultiAutoCompleteTextView ExtractEditText Button 类扩展了 TextView 类, TextView 类是 View 的直接扩展者,表示一个文本区域, Android 中 以文本为主要内容的各种控件均扩展自这个类。 按钮类( Button )作为 TextView 类的扩展者,主 要的区别表现在外观和使用的方式上, Button 通常要 设置处理点击动作的处理器( View.OnClickListener ) ; TextView 类虽然也可以设置这个内容,但是通常不 需要这样做。 普通按钮: Buttons1 ( ApiDemo=>Views=>Buttons1 ) 源代码: com/example/android/apis/view/Buttons1.java 布局文件: buttons_1.xml => android.view.View => android.widget.TextView => android.widget.Button => android.view.View => android.widget.TextView => android.widget.Button => android.widget.CompoundButton => android.widget.ToggleButton 参考示例程序: Chronometer ( ApiDemo=>Views=>Chronometer ) 源代码: com/example/android/apis/view/ChronometerDemo.java 布局文件: chronometer.xml 计数器类 Chronometer : long getBase() String getFormat() void setBase(long base) void setFormat(String format) void start() void stop() => android.view.View => android.widget.TextView => android.widget.Chronometer 3 图像类控件 在 UI 界面上显示图片,是一个常常需要使用到的功能。 在 Android 中可以使用图像区域是一个可以直接显示图片 文件的控件,可以方便显示一个图片。 ImageView , ImageButton 和 ZoomButton 。 图像区域: ImageView ( ApiDemo=>Views=>ImageView ) 源代码: com/example/android/apis/view/ImageView1.java 布局文件: image_view_1.xml void setImageResource (int resId) // 设置图像源的资源 ID void setImageURI(Uri uri) // 设置图像源的 URI void setImageBitmap(Bitmap bm) // 设置一个 Bitmap 位图为图像源 => android.view.View => android.widget.ImageView 图像按钮: ImageButton ( ApiDemo=>Views=>ImageButton ) 源代码: com/example/android/apis/view/ImageButton.java 布局文件: image_button_1.xml => android.view.View => android.widget.ImageView => android.widget.ImageButton 4 进度条类控件 ProgressBar 是 Android 中的进度条,有圆形和水 平两种形态,其中的方法: 进度条: ProgressBar1 ( ApiDemo=>Views=>ProgressBar ) 源代码: com/example/android/apis/view/ProgressBar1.java 布局文件: progressbar_1.xml final void setProgressBarIndeterminate(boolean indeterminate) final void setProgressBarIndeterminateVisibility(boolean visible) final void setProgressBarVisibility(boolean visible) final void setProgress(int progress) final void setSecondaryProgress(int secondaryProgress) => android.view.View => android.widget.ProgressBar AbsSeekBar 进度条: SeekBar 和 RatingBar ( ApiDemo=>Views=> ) 源代码: com/example/android/apis/view/SeekBar1.java com/example/android/apis/view/RatingBar1.java 布局文件: seekbar_1.xml 和 ratingbar_1.xml AbsSeekBar 是 ProgressBar 的一个继承者,主要扩 展是可以设置其中的内容。 void setThumb(Drawable thumb) void setThumbOffset(int thumbOffset) int getThumbOffset() => android.view.View => android.widget.ProgressBar => android.widget.AbsSeekBar => android.widget.SeekBar => android.view.View => android.widget.ProgressBar => android.widget.AbsSeekBar => android.widget.RatingBar 5 自定义的控件 自定义的 View 的含义是通过扩展的方法 ,实现一个扩展 android.view.View 类的类,这 个类的本质也是一个控件,通过它可以直接构 建 UI。 自定义控件的三个层次: 1 在 JAVA 中实现 View 2 在 XML 中使用控件 3 自定义 XML 属性 自定义控件 CustomView ( ApiDemo=>Views=>CustomView ) 源代码: com/example/android/apis/view/CustomView1.java com/example/android/apis/view/LabelView.java 布局文件: custom_view_1.xml 布局文件: import android.view.View; public class LabelView extends View { public LabelView(Context context, AttributeSet attrs) { super(context, attrs); initLabelView(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LabelView); CharSequence s = a.getString(R.styleable.LabelView_text); if (s != null) { setText(s.toString()); } setTextColor(a.getColor(R.styleable.LabelView_textColor, 0xFF000000)); int textSize = a.getDimensionPixelOffset(R.styleable.LabelView_textSize, 0); if (textSize > 0) { setTextSize(textSize); } a.recycle(); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText(mText, getPaddingLeft(),getPaddingTop() - mAscent, mTextPaint); } } com.example.android.apis.view.LabelView ,在源文件 LabView.java 中实现: 在 LabelView 的构造函数中,通过 context.obtainStyledAttributes 获得 LabelView 所特有 的几个属性。 R.styleable.LabelView 这些内容在 res/values/ 的 attrs.xml 文件中进行了定义: public void setText(String text) { mText = text; requestLayout(); invalidate(); } public void setTextSize(int size) { mTextPaint.setTextSize(size); requestLayout(); invalidate(); } public void setTextColor(int color) { mTextPaint.setColor(color); invalidate(); } 作为公共的属性, LabelView 在实现上也应该具有 公共的函数来设置这几个属性。这些函数如下所示: 谢 谢 !
还剩33页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 7 人已下载

下载pdf

pdf贡献者

Pentaho80

贡献于2011-12-01

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf