
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
启用后,图片不会超过设定的maxWidth
和maxHeight
。
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[] { "全部", "美术", "音乐", "体育" };ArrayAdapteradapter = 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[] { "全部", "图书", "游戏", "电视" };ArrayAdapteradapter = 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组件及其实现方法,涵盖了进度条、拖动条、星级评分条、图像视图、图像切换器、网格视图、下拉列表框、列表视图、滚动视图以及选项卡等内容。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月28日 03时13分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
2025-04-01
java-如何给表格添加分页
2025-04-01
Java-笔记12
2025-04-01
java-设计模式-装饰器设计模式,代理设计模式和继承三种扩展方法的比较
2025-04-01
java.io.tmpdir
2025-04-01
java.lang.IllegalStateException: Optional int parameter 'id' is not present but cannot be translated
2025-04-01
java农副产品购物app的设计与开发(ssm)
2025-04-01
JAVA分布式系统
2025-04-02
java分布式链路追踪;jvm应用监控-skywalking
2025-04-02
Java创建elasticsearch的model时,如何配置使用ik分词器?
2025-04-02
java加密解密
2025-04-02
java勤工助学管理系统
2025-04-02
JAVA反射
2025-04-02
Java反射
2025-04-02
java反射介绍
2025-04-02
Java反射代码编写
2025-04-02
JAVA反射机制
2025-04-02
JAVA反射机制
2025-04-02