前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android界面组件基本用法

Android界面组件基本用法

作者头像
提莫队长
发布2019-03-01 09:58:24
1.6K0
发布2019-03-01 09:58:24
举报
文章被收录于专栏:刘晓杰刘晓杰

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属性,用于指定初始时是否被选中

代码语言:javascript
复制
checkBox.setOnCheckedChangeListener( new OnCheckedChangeListener(){
	public void onCheckedChanged( CompoundButton buttonView, Boolean isChecked ){
		if( checkbox.isChecked() ){
			checkbox.getText();
}
}
} )

4.计时器组件Chronometer用法

红色字体表示常用的方法

代码语言:javascript
复制
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)

  1. matrix(ImageView.ScaleType.MATRIX):使用matrix方式进行
  2. fixXY(ImageView.ScaleType.FIX_XY):对图片横向纵向独立缩放,会改变纵横比
  3. fitStart(ImageView.ScaleType.FIT_START):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在左上角
  4. fitCenter(ImageView.ScaleType.FIT_CENTER):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在中央
  5. fitEnd(ImageView.ScaleType.FIT_END):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在右下角
  6. center(ImageView.ScaleType.CENTER):放中间,不缩放
  7. centerCrop(ImageView.ScaleType.CENTER_CROP):保持纵横比,使图片能完全覆盖ImageView
  8. centerInside(ImageView.ScaleType.CENTER_INSIDE):保持纵横比,使ImageView能完全显示图片

6.spinner的功能和用法

如果可以确定spinner里面的列表项,那么直接在/res/layout/main.xml里面指定

代码语言:javascript
复制
<Spinner
	……
	android:entries=”@string/books”
/>

然后在/res/value/string.xml里面指定

代码语言:javascript
复制
<resources>
	<string name="books">
		<item>疯狂Java讲义</item>
		<item>疯狂Ajax讲义</item>
		<item>疯狂XML讲义</item>
	</string-array>
 </resources>

如果不确定里面的列表项,那么必须要提供一个Adapter,这个Adapter负责决定Spinner列表每项的内容

代码语言:javascript
复制
		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)

代码语言:javascript
复制
		//获取当前的年、月、日、小时、分钟
		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()
		{
			@Override
			public 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()
		{
			@Override
			public 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预设的提示文本

代码语言:javascript
复制
//创建一个ArrayAdapter,封装数组
ArrayAdapter<String> aa = new ArrayAdapter<String>(
			this,
			android.R.layout.simple_dropdown_item_1line,
			books);				// books是String数组
AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.auto);
		//设置Adapter
actv.setAdapter(aa);

9.进度条(ProgressBar)

通过style属性可以为ProgressBar指定风格。该属性可以有如下的属性值:

  1. @android:style/Widget.ProgressBar.Horizontal 水平进度条
  2. @android:style/Widget.ProgressBar.Inverse 不断跳跃、旋转画面的进度条
  3. @android:style/Widget.ProgressBar.Large 大进度条
  4. @android:style/Widget.ProgressBar.Large.Inverse不断跳跃、旋转画面的大进度条
  5. @android:style/Widget.ProgressBar.Small 小进度条
  6. @android:style/Widget.ProgressBar.Small.Inverse不断跳跃、旋转画面的小进度条

ProgressBar提供如下方法来操作进度

  1. setProgress(int) 设置进度的完成百分比
  2. incrementProgressBy(int) 设置进度条的增加或减少。参数为正增加,参数为负减少
代码语言:javascript
复制
实例:
	public void onCreate(Bundle savedInstanceState)
	{
		final ProgressBar bar = (ProgressBar) findViewById(R.id.bar);
		//创建一个负责更新的进度的Handler
		final 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();
					// 发送消息到Handler
					Message 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仅仅只是一个简单的容器,它提供如下方法

  1. newTabSpec(String tag) 创建选项卡
  2. addTab(TabHost.TabSpec tabSpec) 添加选项卡

使用TabHost的一般步骤为:

  • A. 在界面中定义TabHost组件,并为该组件定义该选项卡的内容
  • B. Activity应该继承TabActivity
  • C. 调用TabActivity的getTabHost()来获取TabHost对象
  • D. 通过TabHost对象的方法来创建选项卡、添加选项卡

选项卡主要由TabHost、TabWidget、FrameLayout3个组件组成,三者缺一不可,想象一下选项卡的特点,多个卡重叠在一起,所以用FrameLayout即帧布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三个组件的android:id必须使用系统默认的名称,而不能自己随意定义,否则会出错。

代码语言:javascript
复制
实例:
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)

代码语言:javascript
复制
		is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
		is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
		is.setFactory(new ViewFactory(){
			@Override
			public View makeView() {
				// TODO Auto-generated method stub
				return iv;
			}
		});

12.网格视图(GridView)

使用GridView一般指定numColumn大于1,否则取默认值为1.那么GridView就变成了ListView 属性android:stretchMode支持如下属性

  1. none 不拉伸
  2. spacingWidth 仅拉伸元素之间的间距
  3. spacingWidthUniform 表格、元素之间的间距一起拉伸
  4. columnWidth 仅拉伸表格

13.画廊视图(Gallery)(现在已经被弃用了,不过还是列出来吧)

Gallery用法很简单——为它提供一个内容Adapter,该Adapter的getView方法所返回的View可作为Gallery的列表项。可以通过OnItemSelectedListener监听选择项的改变

14.列表试图(ListView和ListActivity)

创建ListView由两种方式:

  1. 直接使用ListView进行创建
  2. 让Activity继承ListActivity(继承了ListActivity的类无需调用setContentView()来显示页面,可以直接设置适配器)

一旦获得ListView后,就要创建显示的列表项了。需要借助内容Adapter,内容Adapter负责提供需要显示的列表项

代码语言:javascript
复制
		ListView list2 = (ListView)findViewById(R.id.list2);
		//定义一个数组
		String[] arr ={"孙悟空" , "猪八戒" , "牛魔王"};
		//将数组包装ArrayAdapter
		ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
			this , android.R.layout.simple_list_item_1 , arr);
		//为ListView设置Adapter
		list2.setAdapter(arrayAdapter);	

创建ArrayAdapter时必须指定一个textViewResourceId,该参数决定每个列表项的外观

  1. simple_list_item_1 每个列表项是普通的TextView
  2. simple_list_item_2 每个列表项是普通的TextView(字体略大)
  3. simple_list_item_checked 每个列表项是已勾选的列表项
  4. simple_list_item_multiple_choice 每个列表项是带多选框的文本
  5. simple_list_item_single_choice 每个列表项是带多单选按钮的文本

15.使用AlertDialog

  1. 创建AlertDialog.Builder对象,该对象是AlertDialog的创建器
  2. 调用AlertDialog.Builder方法为对话框设置图标、标题等
  3. 调用AlertDialog.Builder的create()方法创建AlertDialog对话框
  4. 调用AlertDialog的show()方法显示对话框
代码语言:javascript
复制
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(){
		@Override
		public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
			Toast.makeText(MainActivity.this, "。。。", Toast.LENGTH_SHORT).show();
			}
		});
});
ad.show();

16.使用Toast显示提示框

步骤如下:

  • 调用Toast构造器或makeText方法创建Toast对象
  • 调用Toast方法来设置该消息的对齐方式等
  • 调用Toast的show()方法显示出来

Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();

17.Notification(一般显示网络状态、电池状态、时间等)

使用Notification发送Notification步骤:

  • 调用getSystemService(NOTIFICATION_SERVICE)方法获取系统的Notification Manager服务
  • 通过构造器创建一个Notification对象
  • 为Notification设置属性
  • 通过Notification Manager发送Notification
代码语言:javascript
复制
final NotificationManager nM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notify = new Notification(R.drawable.<id>, “显示通知”, System.currentTimeMillis());
nM.notify(NOTIFY,notify);				//NOTIFY是一个自己定义的ID
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年12月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.文本框(TextView)和编辑框(EditText)
  • 2.按钮(Button)和图片按钮(ImageButton)
  • 3.单选按钮(RadioButton)和复选框(CheckBox)
  • 4.计时器组件Chronometer用法
  • 5.图像视图(ImageView)
  • 6.spinner的功能和用法
  • 7.日期、时间选择器(DatePicker和TimePicker)
  • 8.自动完成文本框(AutoCompleteTextView)
  • 9.进度条(ProgressBar)
  • 10.选项卡(TabHost)
  • 11.图像切换器(ImageSwitcher)
  • 12.网格视图(GridView)
  • 13.画廊视图(Gallery)(现在已经被弃用了,不过还是列出来吧)
  • 14.列表试图(ListView和ListActivity)
  • 15.使用AlertDialog
  • 16.使用Toast显示提示框
  • 17.Notification(一般显示网络状态、电池状态、时间等)
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档