Android 高级UI组件
进度条
进度条ProgressBar
android:max=“100” 最大进度如100
android:progress="50"当前进度
设置进度条样式
a)通过主题方式
style="?android:attr/progressBarStyleHorizontal"
b)通过样式资源
style="@android:style/Widget.ProgressBar.Horizontal"
实时显示
首先开一个单独的进程,循环监控耗时操作的进度,并实时更新进度条的进度setProgress(),如果完成了,通过setVisibility()方法设置进度条不显示
进度条实时显示
public class MainActivity extends AppCompatActivity {private ProgressBar bar;private int mProgress = 0;private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bar = (ProgressBar) findViewById(R.id.bar1); mHandler = new Handler(){//通过匿名内部类实例化Handler,Android在运行时,不允许更新主界面组件,通过Handler发送消息解决 @Override public void handleMessage(@NonNull Message msg) {//重写handleMessage方法 if (msg.what == 0x111){ bar.setProgress(mProgress); }else { Toast.makeText(MainActivity.this,"完成",Toast.LENGTH_LONG).show(); bar.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; } } } private int doWork(){ mProgress += Math.random()*10; try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } return mProgress; } }).start();//开启线程 }}
拖动条SeekBar
android:max="10"//设置最大值android:progress="5"//设置当前值android:thumb="@mipmap/ic_launcher_round"/>//设置图标
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()//change监听器
sbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {//进度改变时触发
img.setImageAlpha(progress);//改变图片的透明度
}
星级评分条RatingBar
设置星星的多少
android:numStars=“5”
默认点亮星星
android:rating=“2”
每次可以选择的星星
android:stepSize=“1”
星星不能改变,只用于显示
android:isIndicator=“true”
获取星星的数量
String rating = String.valueOf(rbar.getRating());//获取星星的数量,并类型转换
图像视图ImageView
图片不进行等比例缩放
android:scaleType=“fitXY”
是否调整图片的宽度
android:adjustViewBounds=“true”
设置最大值,可以包裹
android:maxWidth=“100dp”
android:maxHeight=“100dp”
设置图片的颜色
android:tint="#aaff00"
图像切换器ImageSwitcher
实现手机相册功能
public class MainActivity extends AppCompatActivity { private int[] arrayPic = new int[]{R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5,R.mipmap.img6,R.mipmap.img7}; ImageSwitcher imageSwitcher; private int index; private float touchDownX,touchUpX; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageSwitcher = findViewById(R.id.imgs); imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {//指定视图工厂 @Override public View makeView() {//指定图片资源 ImageView imgv = new ImageView(MainActivity.this); imgv.setImageResource(arrayPic[index]); return imgv; } }); imageSwitcher.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { touchDownX = event.getX(); return true; }else if(event.getAction() == MotionEvent.ACTION_UP) { touchUpX = event.getX(); if (touchUpX - touchDownX > 100){//左向右滑动 index = index==0?arrayPic.length-1:index-1; //imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.)); 设置动画资源 imageSwitcher.setImageResource(arrayPic[index]); }else if(touchDownX - touchUpX > 100) { index = index==arrayPic.length-1?0:index+1; imageSwitcher.setImageResource(arrayPic[index]); } return true; } return false; } }); }}
网格视图GridView
数据源需要通过Adapter 将数据显示在GridView
适配器分为4类:
ArrayAdapter 数组适配器
SimpleAdapter 简单适配器
SmipleCursorAdapter
BaseAdapter
设置网格视图的列数
android:numColumns=“3”
首先编写布局文件,用于设置单个单元格的布局 ImageView cell.xml
定义数组
定义maplist 放置图片资源
创建Adapter
设置Adapter
1、
2、
public class MainActivity extends AppCompatActivity { private int[] pic = new int[] {R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5,R.mipmap.ic_launcher}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gv = (GridView)findViewById(R.id.gv); List
下拉列表框
1、首先在value文件夹定义数据
2、在activity_main中调用value
android:entries="@array/ctype"
上面两步也可以用代码实现,通过适配器
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] ctype = new String[]{"项目3","项目4"}; 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.sp); spinner.setAdapter(adapter); }}
3、获取选取值
String str = spinner.getSelectedItem().toString();
列表视图ListView
以垂直类别的形式,列出要选择的项,可以带有图片
设置列表内容可以参考“下拉列表框”的1、2步骤
也可以通过JAVA代码实现,可以参考“下拉列表框”中使用的方法
实现带有图片的列表视图,并在点击时,获取点击的值
首先创建布局,用于指定每个单选项布局
JAVA代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int[] imgid = new int[]{R.mipmap.img1,R.mipmap.img2,R.mipmap.img3}; String[] title = new String[]{"图片1","图片2","图片3"}; List> listitem = new ArrayList>(); for (int i = 0; i < imgid.length; i++) { Map map = new HashMap(); map.put("image",imgid[i]); map.put("name",title[i]); listitem.add(map); } SimpleAdapter adapter = new SimpleAdapter(this,listitem,R.layout.main,new String[]{"name","image"},new int[]{R.id.txt,R.id.img}); ListView listView = (ListView) findViewById(R.id.lv); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map map = (Map) parent.getItemAtPosition(position); Toast.makeText(MainActivity.this,map.get("name").toString(),Toast.LENGTH_SHORT).show(); } });
滚动视图ScrollView
对于页面上没有显示的内容,可以拖动滚动条
选项卡
四个步骤:
1、在布局文件中添加TabHost、TabWidget和TabContent组件
2、编写个标签页的XML文件
3、获取并初始化TabHost组件
4、为TabHost对象添加标签页
更多相关文章
- 没事抽空学——常用界面组件属性
- 边缘图片android布局属性详解
- Android缩放图片Bitmap、Drawable
- android studio 3.6.0 绑定视图新特性的方法
- Android - 组件工具箱(widget tool box)
- android 拖动图片/拖动浮动按钮
- android中的按钮以图片的方式显示_基础篇
- 详解Android读取本地图片和网络图片的方法
- android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android