Android高级UI组件
发布日期:2021-05-18 10:45:54 浏览次数:39 分类:精选文章

本文共 5771 字,大约阅读时间需要 19 分钟。

Android 高级 UI 组件指南

一、进度条

进度条是显示操作进度的重要 UI 组件,Android 提供了两种主要类型:水平进度条和圆形进度条,默认为圆形进度条。

1. 进度条类型选择

  • 水平进度条:使用 ProgressBar,适用于需要实时展示进度的场景。
  • 圆形进度条:同样基于 ProgressBar,适合只需显示加载状态的应用场景。

2. 进度条属性

  • 样式设置:通过 style 属性可以修改进度条的外观。
    • @android:style/Widget.ProgressBar.Horizontal:粗细水平长条。
    • @android:style/Widget.ProgressBar.Large:旋转画面的大圆形。
    • @android:style/Widget.ProgressBar.Small:旋转画面的小圆形。
  • 最大值与当前进度
    • android:max:设置进度条的最大值。
    • android:progress:设置当前进度值。

3. 实时更新进度

为了实现实时更新,建议在子线程中获取进度值,并通过 Handler 在主线程中更新 UI 组件。代码示例:

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pg);
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x111) {
progressBar.setProgress(mProgress);
} else {
Toast.makeText(MainActivity.this, "耗时操作已完成", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
mProgress = doWork();
Message m = new Message();
if (mProgress < 100) {
m.what = 0x111;
mHandler.sendMessage(m);
} else {
m.what = 0x110;
mHandler.sendMessage(m);
break;
}
}
}
}).start();

二、拖动条

拖动条(SeekBar)是一种带有拖动指示的进度条,常用于用户交互。

1. 特性

  • 拖动指示:通过 android:thumb 属性设置拖动条的图片资源。
  • 最大值与当前进度:与进度条相同,支持绑定属性。

三、星级评分条

评分条(RatingBar)用于显示用户对某项内容的评分,支持多个星级显示。

1. 属性

  • 星星数量android:numStars 设置星星个数。
  • 初始亮度android:rating 设置初始亮星数。
  • 步长设置android:stepSize 设置最小点亮星数。
  • 只读模式android:isIndicator 是否为只读模式,true 时不可改。

四、图像视图

ImageView 用于显示图片,支持多种缩放模式和图片着色。

1. 图片缩放

  • 填充模式android:scaleType 可选:
    • fitXY:按指定大小显示,可能会拉伸。
    • fitStart:按比例显示,仅显示图片的一部分。
  • 最大尺寸android:adjustViewBounds 启用后,图片不会超过设定的 maxWidthmaxHeight

2. 图片着色

通过 android:tint 属性设置图片的填充颜色。

五、图像切换器

ImageSwitcher 用于实现带动画效果的图片切换。

1. 初始化

ImageSwitcher imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(arrayPicture[index]);
return imageView;
}
});

2. 切换动画

imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));

六、网格视图

GridView 用于按行列布局显示多个组件,常用于展示图片列表。

1. 适配器实现

class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
@Override
public int getCount() {
return picture.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView imageView;
if (view == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(100, 90));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) view;
}
imageView.setImageResource(picture[i]);
return imageView;
}
}

七、下拉列表框

Spinner 用于显示下拉列表,支持自定义项和适配器。

1. 适配器实现

String[] ctype = new String[] { "全部", "美术", "音乐", "体育" };
ArrayAdapter
adapter = new ArrayAdapter
(this, android.R.layout.simple_spinner_item, ctype);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView
adapterView, View view, int i, long l) {
String str = adapterView.getItemAtPosition(i).toString();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
});

八、列表视图

ListView 用于显示可滚动的列表项,支持自定义适配器。

1. 适配器实现

String[] ctype = new String[] { "全部", "图书", "游戏", "电视" };
ArrayAdapter
adapter = new ArrayAdapter
(this, android.R.layout.simple_list_item_1, ctype);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView
adapterView, View view, int i, long l) {
String str = adapterView.getItemAtPosition(i).toString();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
});

九、滚动视图

滚动视图(ScrollView 和 HorizontalScrollView)用于显示可滚动的内容。

1. XML布局实现

十、选项卡

选项卡(TabHost)用于创建多页的UI,用户可以通过点击标签页切换内容。

1. XML布局

2. Java代码

package com.mingrisoft.demo2;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
LayoutInflater inflater = LayoutInflater.from(this);
inflater.inflate(R.layout.tab1, tabHost.getTabContentView());
inflater.inflate(R.layout.tab2, tabHost.getTabContentView());
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("文字").setContent(R.id.left));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("主题").setContent(R.id.right));
}
}

以上内容涵盖了Android中常见的高级UI组件及其实现方法,涵盖了进度条、拖动条、星级评分条、图像视图、图像切换器、网格视图、下拉列表框、列表视图、滚动视图以及选项卡等内容。

上一篇:Android 设置边距总结
下一篇:Android UI组件

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月28日 03时13分41秒