站长工具app,服装设计公司有什么职位,福鼎网站建设培训,编程培训机构哪里好在Android应用程序中#xff0c;界面由布局和组件组成。布局相当于框架#xff0c;而控件则是框架里面的内容。了解过Android布局后#xff0c;如果要设计ui界面#xff0c;还需要了解和掌握各个控件的应用。
一个界面的设计#xff0c;先从创建容器开始#xff0c;再向…在Android应用程序中界面由布局和组件组成。布局相当于框架而控件则是框架里面的内容。了解过Android布局后如果要设计ui界面还需要了解和掌握各个控件的应用。
一个界面的设计先从创建容器开始再向容器中添加组件最后形成一个ui界面。接下来介绍各个组件。
TextView文本框
TextView的作用就是在界面上显示文字在布局文件当中或者在Activity中修改文字的内容。
EditText输入框
EditText最重要属性是inputType可以为EditText输入指定类型。
有提示作用使用android:hint“”来提示用户输入什么内容。
Button按钮
Button可设置为按钮添加onClick事件点击事件。通过android:background为按钮设置背景或者自定义样式。Button的xml属性和TextView相似大多数属性能够共用。
RadioButton单选按钮和CheckBox多选框
RadioButton和CheckBox都继承自Button类可以直接使用Button支持的各种属性和方法。 RadioButton和CheckBox拥有选中功能android:checked属性用于指定RadioButton和CheckBox初始时是否被选中。
一组RadioButton只能选中其中一个RadioButton通常和RadioGroup一起使用用于定义一组单选按钮。
!--单选按钮--
RadioGroup android:layout_widthmatch_parent android:layout_heightwrap_content
RadioButton android:idid/radioButton2 android:layout_widthwrap_content android:layout_heightwrap_content android:checkedtrue android:text男 /
RadioButton android:idid/radioButton android:layout_widthwrap_content android:layout_heightwrap_content android:text女 /
/RadioGroup !--复选框--
CheckBox android:idid/checkBox android:layout_widthmatch_parent android:layout_heightwrap_content android:text读书 /
CheckBox android:idid/checkBox2 android:layout_widthmatch_parent android:layout_heightwrap_content android:text看电影 /
CheckBox android:idid/checkBox3 android:layout_widthmatch_parent android:layout_heightwrap_content android:text打篮球 /
CheckBox android:idid/checkBox4 android:layout_widthmatch_parent android:layout_heightwrap_content android:text听音乐 / ImageView图像视图
ImageView继承自View组件主要用于显示图片。
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto android:layout_widthmatch_parent
android:layout_heightmatch_parent
android:orientationvertical
ImageView android:idid/imageView android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravitycenter android:srcmipmap/ic_launcher /
ImageButton android:idid/imageButton android:layout_widthfill_parent android:layout_heightwrap_content android:srcmipmap/ic_launcher /
/LinearLayoutProgressBar进度条
ProgressBar本身是进度条组件。
进度条用于向用户显示某个耗时操作完成的百分比。
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalProgressBarandroid:idid/progressBar5style?android:attr/progressBarStyleandroid:layout_widthmatch_parentandroid:layout_heightwrap_content /ProgressBarandroid:idid/progressBar4style?android:attr/progressBarStyleHorizontalandroid:layout_width145dpandroid:layout_height25dpandroid:layout_gravitycenterandroid:layout_marginTop30dp android:backgroundandroid:color/holo_green_light /
/LinearLayoutAdapter接口
Adapter本身只是一个接口派生了ListAdapter和SpinnerAdapter两个子接口其中ListAdapter为AbsListView提供列表项SpinnerAdapter为AbsSpinner提供列表项。Adapter常用的实现类有ArrayAdapter、SimpleAdapter和BaseAdapter。
基于ArrayAdapter创建ListView
public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.listview_layout);ListView listView(ListView)findViewById(R.id.listview1);//定义一个数组用来填充listviewString[] arr{章节1,章节2,章节3};ArrayAdapterString adapternew ArrayAdapterString
(this,android.R.layout.simple_expandable_list_item_1,arr);//为listview设置adapterlistView.setAdapter(adapter);}} SimpleAdapter创建ListView
先创建一个 list_item_layout
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal
!--定义一个ImageView组件用来显示头像--ImageViewandroid:idid/iconandroid:layout_widthwrap_contentandroid:layout_heightwrap_content /LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationvertical
!--定义一个TextView组件用来显示名字--TextViewandroid:idid/nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textSize16sp/
!--定义一个TextView组件用来显示人物的描述--TextViewandroid:idid/dexcandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textSize16sp//LinearLayout
/LinearLayoutpublic class MainActivity extends Activity {//定义名字数组private String[] name{张三,王五,赵六};//定义描述任务数组private String[] desc{唱歌,跳舞,打球};//定义头像数组
Private int[] iconnew int[] {R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};
Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.listview_layout);ListView listView(ListView)findViewById(R.id.listview1);//创建一个list集合list集合的元素是MAPListMapString,Object list new ArrayListMapString,Object();for(int i0;iname.length;i){MapString, Object listitemnew HashMapString, Object();listitem.put(icon,icon[i]);listitem.put(name,name[i]);listitem.put(desc,desc[i]);list.add(listitem); }//创建一个SimpleAdapterSimpleAdapter adapter
new SimpleAdapter(this,list,R.layout.list_item_layout,
new String[]{name,icon,desc},
new int[]{R.id.name,R.id.icon,R.id.dexc});listView.setAdapter(adapter);}
}BaseAdapter创建ListView
1自定义布局文件list_item_layout.xml作为每一行的布局样式。
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal LinearLayoutandroid:layout_width200dipandroid:layout_heightmatch_parentandroid:orientationhorizontalImageViewandroid:idid/imageviewandroid:layout_width50dipandroid:layout_height50dip /TextViewandroid:idid/textviewandroid:layout_widthwrap_contentandroid:layout_heightmatch_parentandroid:paddingTop8dipandroid:textSize20sp //LinearLayoutButtonandroid:idid/buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_content /
/LinearLayout2自定义一个MyAdapter类继承自BaseAdapter然后重写里边的方法。
public class MyAdapter extends BaseAdapter {private ListMapString, Object datas;private Context mContext;public MyAdapter(ListMapString, Object datas, Context mContext) {this.datas datas;this.mContext mContext;}public int getCount() {// 返回数据的总数return datas.size(); }public Object getItem(int position) {// 返回在list中指定位置的数据的内容return datas.get(position); }public long getItemId(int position) {// 返回数据在list中所在的位置return position; }public View getView(int position, View convertView, ViewGroup parent) {final ViewHolder holder;if (convertView null) {// 使用自定义的布局文件作为LayoutconvertView LayoutInflater.from(mContext).inflate(R.layout.list_item_layout, null);// 减少findView的次数holder new ViewHolder();// 初始化布局中的元素holder.mImageView (ImageView) convertView.findViewById(R.id.imageview);holder.mTextView (TextView) convertView.findViewById(R.id.textview);holder.mButton (Button) convertView.findViewById(R.id.button);holder.mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {Toast.makeText(mContext,你点了我哈哈,Toast.LENGTH_SHORT).show(); } });
convertView.setTag(holder);} else {holder (ViewHolder) convertView.getTag();}// 从传入的数据中提取数据并绑定到指定的view中holder.mImageView.setImageResource((Integer) datas.get(position).get(img));holder.mTextView.setText(datas.get(position).get(title).toString());holder.mButton.setText(datas.get(position).get(button).toString());return convertView;}
3MainActivity中添加数据以及为ListView添加上文自定义的Adapter。
public class MainActivity extends Activity {private ListView mListView;private MyAdapter myAdapter;private ListMapString, Object list new ArrayListMapString, Object();protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();mListView (ListView) findViewById(R.id.listview);myAdapter new MyAdapter(list, this);mListView.setAdapter(myAdapter);}private void initData() {MapString, Object map new HashMapString, Object();map.put(img, R.drawable.android);map.put(title, Android);map.put(button, 学习);list.add(map);map new HashMapString, Object();map.put(img, R.drawable.java1);map.put(title, JAVA);map.put(button, 学习);list.add(map);map new HashMapString, Object();map.put(img, R.drawable.html5);map.put(title, HTML5);map.put(button, 学习);list.add(map);
}
} AdapterView及其子类
AdapterView具有如下特征AdapterView 继承了ViewGroup本质上来说它是容器。AdapterView中包括多个“列表项”并会以合适的方式显示出来显示的多个“列表项”由Adapter提供。通常调用AdapterView的setAdapter(Adapter)方法设置Adapter。
ListView和ListActivity
ListView是一种使用非常广泛的组件通常以垂直列表的形式显示其所有的列表项。
生成列表视图有如下两种方式
1、直接使用ListView进行创建。
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent
!--直接使用数组资源给list view添加列表项--
!--设置分割条的颜色--
!--设置分割条的高度--ListViewandroid:idid/listview1android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:divider#C4C4C4android:entriesarray/teacher_nameandroid:dividerHeight1dp/ListView
/LinearLayout?xml version1.0 encodingutf-8?
resources
!--添加数组元素--string-array nameteacher_nameitem张三/itemitem李四/itemitem王五/itemitem赵六/item/string-array
/resources2、创建一个继承ListActivity的Activity相当于设计该Activity显示的组件为ListView