Android高级组件

来源:互联网 发布:怎么淘宝介入 编辑:程序博客网 时间:2024/05/20 12:49

ProgressBar

2种样式,水平的 圆环的 1. 圆环:不确定时间 2. 水平:知道时间或者任务个数水平的时候,需要设置 max和progress max默认值100;使用style来设置进度条的样式使用?来引用android中的属性?和@有什么区别?      @是直接引用当前的属性的值,这个值是固定的,在任意的sdk上都不会改变      ?是引用当前的属性。这个值会随着主题的改变而改变。也就是说 sdk不同时,有可能表现出不同的样式。      ?只允许引用attr属性max: 进度条的最大值 setMax getMaxprogress: 进度条的当前值,改变progress,对应的视图也会修改 setProgress getProgress

SeekBar 拖动条

一个可以拖拽修改数字的组件,和progressBar一样,有一个max和progress属性
重要监听

setOnSeekBarChangedListener();onStopTrackingTouch 当手指离开拖动条的时候,触发该方法onStartTrackingTouch 当手指按下拖动条的时候,触发该方法onProgressChanged 当进度改变的时候,触发该方法 fromUser 是否来自用户的操作

ScrollView 滚动视图 HorizontalScrollView

为其他组件提供可以滚动的操作
ScollView必须只有一个 直接的子控件

sv.fullScroll(ScrollView.FOCUS_UP/DOWN H:LEFT/RIGHT);

AutoCompleteTextView 自动完成文本框

EditText的子类,是一个输入框,自动完成功能,必须要一个数据源,然后他会在数据源中去匹配,找到后,自动提示。必须使用适配器,一般使用ArrayAdapter

ArrayAdapter

2种构造方法(不含数据源)//自己的布局 ArrayAdapter(Context,layoutId,textViewId,T[]/List<T>);//T为对象的时候,使用toString//系统的布局 ArrayAdapter(Context,layoutId,T[]/List<T>);ArrayAdapter 只能关联一个TextView 必须要有一个TextView和ta的子类

MultiAutoCompleteTextView 多行自动完成文本框

和AutoCompleteTextView相同,只不过多了一个分隔符,这个分割符必须要实现

setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());//如果需要实现不同的符号,直接copy上面的源代码,修改字符。setAdapter(adapter);

Spinner 下拉列表

Spinner可以在xml给一个数据源(xml中字符串数组),也可以给一个适配器entries:设置数据源也可以给适配器 也是使用ArrayAdapter
spinner.setSelection(2,true);//选中默认值
 有一个监听setOnItemSelectedListener : 当他的子项被选中的时候,选中的position位置。public void onItemSelected(AdapterView<?> parent, View view,intposition, long id)AdapterView<?> parent:跟onClick(View v)中的v一样,代表当前的组件View view: 当前适配器中的布局。position:当前选中的组件位于数组或者集合中的第几个,让我们知道当前的数据源。id: 在一般的情况下,position和id相同

ListView 列表视图

支持数据源,也支持适配器divider:分隔符dividerHeight:分隔符高度listSelector:被选中的条目变色(如果需要按下变色,需要修改item布局的根布局属性)tools:listitem:显示 默认的匹配布局scrollbars: 右边的滚动条

SimpleAdapter

简单的适配器,一点都不简单。数据源:List<HashMap<String,Object>>构造方法:SimpleAdapter adapter = new SimpleAdapter(this, getData(),R.layout.item_person, from, to);// 存放的是在布局中所有的需要设置值的组件的idint[] to = { R.id.img, R.id.tv_name, R.id.tv_info };// 在HashMap中,所有的键的名称String[] from = { "img", "name", "info" }; // 1对1 映射关系 两个数组的每一位都是关联在一起的List的长度是条目的个数HashMap是每个条目的数据,有多少键值对,说明视图有多少个组件与之一一对应。

BaseAdapter 最常用的适配器 List

万能适配器,什么都可以做setAdapter之后1. 调用getCount方法来获取数据的长度2. for(int=0i<getCount();i++) getView(i)调用 getView(i)创建布局;
抽象方法getCount() 数据长度 显示的条目个数getItem() 返回对应条目的数据getItemId() 返回对应条目的idgetView() 返回每一个条目的视图布局重用每一个滑出去的View会从新以convertView作为参数传入getView方法if(convertView==null){convertView=View.inflate(context,layoutResId,null);实例化ViewHolderconvertView.setTag(ViewHolder);    }elseViewHolder =convertView.getTag();bindView(getItem);//设置组件的值视图刷新只要数据有改变(增加或者删除数据),就必须调用适配器的adapter.notifyDataSetChanged();//必须在主线程中调用视图更新。否则会出异常。

GridView 网格视图

numColumns: 列数 显示多少列horizontalSpacing="10dp" 水平间距verticalSpacing="10dp" 垂直间距

圆角图片

将CircleImageView.java复制到 本工程中将circle_attr.xml复制到values里面将需要使用圆角的xml中的ImageView改变成 包名.CircleImageView

设置库

properties -> android -> isLibrary ->勾选

ExpandableListView和BaseExpandableListAdapter

groupIndicator: 组上的 指示器