Android界面组件基本用法
16lz
2021-01-23
1.文本框(TextView)和编辑框(EditText)
文本框(TextView)不允许用户编辑文本内容,而编辑框(EditText)允许用户编辑文本内容 2.按钮(Button)和图片按钮(ImageButton)
Button显示文字,ImageButton显示图片。为ImageButton指定android:text属性没用,不会显示文字
可以指定android:background为按钮增加背景图片,但这图片是固定的
可以指定android:src为图片按钮增加图片属性
其实,src才是设置图标,而background只是设置背景。
如果控件的大小是100*100 图片资源是80*80的话,那么用src,图片就会居中显示,如果使用background那么图片就会被拉伸充满控件。
重要的是,background是底层的图片资源,src是覆盖在background上面的资源,他们可以叠加使用,实现选中的效果。
3.单选按钮(RadioButton)和复选框(CheckBox)
多了一个android:checked属性,用于指定初始时是否被选中checkBox.setOnCheckedChangeListener( new OnCheckedChangeListener(){public void onCheckedChanged( CompoundButton buttonView, Boolean isChecked ){if( checkbox.isChecked() ){checkbox.getText();}}} )
4.计时器组件Chronometer用法
红色字体表示常用的方法final Chronometer ch = (Chronometer)findViewById(R.id.test); //获取计时器组件Button start = (Button)findViewById(R.id.start); //获取“开始”按钮start.setOnClickListener(new OnClickListener(){public void onClick(View source){//设置开始计时时间ch.setBase(SystemClock.elapsedRealtime());//启动计时器ch.start();}});ch.setOnChronometerTickListener(new OnChronometerTickListener(){public void onChronometerTick(Chronometer ch){//如果从开始计时到现在超过了20s。if(SystemClock.elapsedRealtime() - ch.getBase() > 20 * 1000)ch.stop();}});
5.图像视图(ImageView)
它支持属性android:scaleType setScaleType(ImageView.ScaleType)- matrix(ImageView.ScaleType.MATRIX):使用matrix方式进行
- fixXY(ImageView.ScaleType.FIX_XY):对图片横向纵向独立缩放,会改变纵横比
- fitStart(ImageView.ScaleType.FIT_START):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在左上角
- fitCenter(ImageView.ScaleType.FIT_CENTER):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在中央
- fitEnd(ImageView.ScaleType.FIT_END):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在右下角
- center(ImageView.ScaleType.CENTER):放中间,不缩放
- centerCrop(ImageView.ScaleType.CENTER_CROP):保持纵横比,使图片能完全覆盖ImageView
- centerInside(ImageView.ScaleType.CENTER_INSIDE):保持纵横比,使ImageView能完全显示图片
6.spinner的功能和用法
如果可以确定spinner里面的列表项,那么直接在/res/layout/main.xml里面指定
然后在/res/value/string.xml里面指定 - 疯狂Java讲义
- 疯狂Ajax讲义
- 疯狂XML讲义
如果不确定里面的列表项,那么必须要提供一个Adapter,这个Adapter负责决定Spinner列表每项的内容 BaseAdapter ba = new BaseAdapter(){public int getCount(){return 10;}public Object getItem(int position){return null;}public long getItemId(int position){return 0;}//上面三个函数都是继承的虚函数//重写该方法,该方法返回的View将作为列表框的每项public View getView(int position, View convertView, ViewGroup parent) {//创建一个LinearLayout,并向其中添加组件LinearLayout line = new LinearLayout(SpinnerTest2.this);TextView text = new TextView(SpinnerTest2.this);line.addView(text);//返回LinearLayout实例return line;}};Spinner spinner = (Spinner)findViewById(R.id.test);spinner.setAdapter(ba);
7.日期、时间选择器(DatePicker和TimePicker)
//获取当前的年、月、日、小时、分钟Calendar c = Calendar.getInstance();year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH);day = c.get(Calendar.DAY_OF_MONTH);hour = c.get(Calendar.HOUR);minute = c.get(Calendar.MINUTE);//初始化DatePicker组件,初始化时指定监听器datePicker.init(year , month ,day , new OnDateChangedListener(){@Overridepublic void onDateChanged(DatePicker arg0, int year, int month, int day){ChooseDate.this.year = year;ChooseDate.this.month = month;ChooseDate.this.day = day;//显示当前日期、时间showDate(year, month , day , hour, minute);}});//为TimePicker指定监听器timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){@Overridepublic void onTimeChanged(TimePicker arg0, int hour, int minute){ChooseDate.this.hour = hour;ChooseDate.this.minute = minute;//显示当前日期、时间showDate(year, month , day , hour, minute);}});
8.自动完成文本框(AutoCompleteTextView)
比普通文本框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单后,组件会按用户选择自动填写该文本框使用该组件很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本
//创建一个ArrayAdapter,封装数组ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,books);// books是String数组AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.auto);//设置Adapteractv.setAdapter(aa);
9.进度条(ProgressBar)
通过style属性可以为ProgressBar指定风格。该属性可以有如下的属性值:- @android:style/Widget.ProgressBar.Horizontal 水平进度条
- @android:style/Widget.ProgressBar.Inverse 不断跳跃、旋转画面的进度条
- @android:style/Widget.ProgressBar.Large 大进度条
- @android:style/Widget.ProgressBar.Large.Inverse不断跳跃、旋转画面的大进度条
- @android:style/Widget.ProgressBar.Small 小进度条
- @android:style/Widget.ProgressBar.Small.Inverse不断跳跃、旋转画面的小进度条
- setProgress(int) 设置进度的完成百分比
- incrementProgressBy(int) 设置进度条的增加或减少。参数为正增加,参数为负减少
实例:public void onCreate(Bundle savedInstanceState){final ProgressBar bar = (ProgressBar) findViewById(R.id.bar);//创建一个负责更新的进度的Handlerfinal Handler mHandler = new Handler(){public void handleMessage(Message msg){if (msg.what == 0x111)bar.setProgress(status);}};//启动线程来执行任务new Thread(){public void run(){while (status < 100){// 获取耗时操作的完成百分比status = doWork();// 发送消息到HandlerMessage m = new Message();m.what = 0x111;// 发送消息mHandler.sendMessage(m);}}}.start();}//模拟一个耗时的操作。public int doWork(){//为数组元素赋值data[hasData++] = (int)(Math.random() * 100);try{Thread.sleep(100);}catch (InterruptedException e){e.printStackTrace();}return hasData;}
10.选项卡(TabHost)
TabHost仅仅只是一个简单的容器,它提供如下方法- newTabSpec(String tag) 创建选项卡
- addTab(TabHost.TabSpec tabSpec) 添加选项卡
- A. 在界面中定义TabHost组件,并为该组件定义该选项卡的内容
- B. Activity应该继承TabActivity
- C. 调用TabActivity的getTabHost()来获取TabHost对象
- D. 通过TabHost对象的方法来创建选项卡、添加选项卡
实例:TabHost tabHost = getTabHost();或者findViewById也行,不过后面要有tabHost.setup();//设置使用TabHost布局LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);//添加第一个标签页tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("已接电话").setContent(R.id.tab01)); //添加第二个标签页,在标签标题上放置图标tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("呼出电话" , getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab02)); //添加第三个标签页tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("未接电话").setContent(R.id.tab03));
11.图像切换器(ImageSwitcher)
is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));is.setFactory(new ViewFactory(){@Overridepublic View makeView() {// TODO Auto-generated method stubreturn iv;}});
12.网格视图(GridView)
使用GridView一般指定numColumn大于1,否则取默认值为1.那么GridView就变成了ListView属性android:stretchMode支持如下属性
- none 不拉伸
- spacingWidth 仅拉伸元素之间的间距
- spacingWidthUniform 表格、元素之间的间距一起拉伸
- columnWidth 仅拉伸表格
13.画廊视图(Gallery)(现在已经被弃用了,不过还是列出来吧)
Gallery用法很简单——为它提供一个内容Adapter,该Adapter的getView方法所返回的View可作为Gallery的列表项。可以通过OnItemSelectedListener监听选择项的改变14.列表试图(ListView和ListActivity)
创建ListView由两种方式:- 直接使用ListView进行创建
- 让Activity继承ListActivity(继承了ListActivity的类无需调用setContentView()来显示页面,可以直接设置适配器)
ListView list2 = (ListView)findViewById(R.id.list2);//定义一个数组String[] arr ={"孙悟空" , "猪八戒" , "牛魔王"};//将数组包装ArrayAdapterArrayAdapter arrayAdapter = new ArrayAdapter(this , android.R.layout.simple_list_item_1 , arr);//为ListView设置Adapterlist2.setAdapter(arrayAdapter);
创建ArrayAdapter时必须指定一个textViewResourceId,该参数决定每个列表项的外观 - simple_list_item_1 每个列表项是普通的TextView
- simple_list_item_2 每个列表项是普通的TextView(字体略大)
- simple_list_item_checked 每个列表项是已勾选的列表项
- simple_list_item_multiple_choice 每个列表项是带多选框的文本
- simple_list_item_single_choice 每个列表项是带多单选按钮的文本
15.使用AlertDialog
- 创建AlertDialog.Builder对象,该对象是AlertDialog的创建器
- 调用AlertDialog.Builder方法为对话框设置图标、标题等
- 调用AlertDialog.Builder的create()方法创建AlertDialog对话框
- 调用AlertDialog的show()方法显示对话框
AlertDialog ad = new AlertDialog.Builder(MainActivity.this).create();ad.setIcon(R.drawable.a);ad.setTitle("系统提示: ");ad.setMessage("带取消、中立和确定按钮的对话框!");ad.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "。。。", Toast.LENGTH_SHORT).show();}});});ad.show();
16.使用Toast显示提示框
步骤如下:- 调用Toast构造器或makeText方法创建Toast对象
- 调用Toast方法来设置该消息的对齐方式等
- 调用Toast的show()方法显示出来
17.Notification(一般显示网络状态、电池状态、时间等)
使用Notification发送Notification步骤:- 调用getSystemService(NOTIFICATION_SERVICE)方法获取系统的Notification Manager服务
- 通过构造器创建一个Notification对象
- 为Notification设置属性
- 通过Notification Manager发送Notification
final NotificationManager nM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notify = new Notification(R.drawable., “显示通知”, System.currentTimeMillis());nM.notify(NOTIFY,notify);//NOTIFY是一个自己定义的ID
更多相关文章
- Android 控件之ImageSwitcher图片切换器
- Android编程心得-图片自适应心得
- Android: wifi设置默认AP列表
- Android 使用Canvas在图片上绘制文字的方法
- Android中从图库中选取图片实例详解
- imageView的Selector图片选择问题