Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton

Hi 大家好!
今天继续我们的控件学习,今天主要学习3种控件
1 Toast -- 提示信息 (这种提示是不能获取到焦点,并且会在一定时间内消失,类似与Windows软件中的气泡消息)
2 Spinner --- 下拉菜单 (这个就不用解释了吧。。)
3 RadioButton --- 单选按钮 (同上)
那么,课程开始之前,同样是先上笑话。。
诊所门前坐着3个小孩——大男孩、小男孩、女孩。 护士问:小朋友,哪儿不舒服? 大男孩:我吞下了一个玻璃球。 护士问另一个:你呢?
女孩:那玻璃球是我的。 护士又问:哪你呢? 小男孩:接下来是我玩! :)
首先是Toast,先来看看运行起来默认的效果,如下图
Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton
这种效果还是比较常用的,其实Toast有5种不同的实现效果,本人觉得有3种比较常用,在这里我主要讲3种不同类型的Toast,分别是 默认效果、自定义位置效果、带图片效果。贴上代码,代码中都有详细注释
package TSD.Jason.Example; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.MotionEvent; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class ToastActivity extends Activity { @Override protected void _disibledevent=>super.onCreate(savedInstanceState); setContentView(R.layout.toast); } /* 屏幕触点事件 *该方法并不只处理一种事件,一般情况下以下三种情况的事件全部由onTouchEvent方法处理, *只是三种情况中的动作值不同。 * *屏幕被按下:当屏幕被按下时,会自动调用该方法来处理事件,此时MotionEvent.getAction() *的值为MotionEvent.ACTION_DOWN,如果在应用程序中需要处理屏幕被按下的事件, *只需重新该回调方法,然后在方法中进行动作的判断即可。 * *屏幕被抬起:当触控笔离开屏幕时触发的事件,该事件同样需要onTouchEvent方法来捕捉,然后在方法中进行动作判断。 *当MotionEvent.getAction()的值为MotionEvent.ACTION_UP时,表示是屏幕被抬起的事件。 * *在屏幕中拖动:该方法还负责处理触控笔在屏幕上滑动的事件,同样是调用MotionEvent.getAction() *方法来判断动作值是否为MotionEvent.ACTION_MOVE再进行处理。 * * * * event.getAction() //获取触控动作比如ACTION_DOWN * event.getPointerCount(); //获取触控点的数量,比如2则可能是两个手指同时按压屏幕 event.getPointerId(nID); //对于每个触控的点的细节,我们可以通过一个循环执行getPointerId方法获取索引 event.getX(nID); //获取第nID个触控点的x位置 event.getY(nID); //获取第nID个点触控的y位置 event.getPressure(nID); //LCD可以感应出用户的手指压力,当然具体的级别由驱动和物理硬件决定的 event.getDownTime() //按下开始时间 event.getEventTime() // 事件结束时间 event.getEventTime()-event.getDownTime()); //总共按下时花费时间 Toast.LENGTH_SHORT 较短时间 Toast.LENGTH_LONG 较长时间 * * */ @Override public boolean _disibledevent=>switch (event.getAction()) { case MotionEvent.ACTION_DOWN: System.out.println("用户按下"); break; case MotionEvent.ACTION_UP: System.out.println("用户抬起"); break; case MotionEvent.ACTION_MOVE: System.out.println("用户移动"); break; } Toast.makeText(this,"Toast 的使用方式:点击的X轴为:"+ event.getX() + " 点击的Y轴为:" + event.getY(), Toast.LENGTH_SHORT).show(); return true; } /** * 自定义Toast显示位置 */ private void ShowToast() { Toast toast = Toast.makeText(this,"Toast自定义的显示位置",Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } /** * 自定义带图片的Toast */ private void ShowImgToast() { Toast toast = Toast.makeText(getApplicationContext(), "带图片的Toast", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); LinearLayout toastView = (LinearLayout) toast.getView(); ImageView imageCodeProject = new ImageView(getApplicationContext()); imageCodeProject.setImageResource(R.drawable.icon); toastView.addView(imageCodeProject, 0); toast.show(); } }
自定义位置效果运行如下图:
Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton
toast.setGravity(Gravity.CENTER, 0, 0); setGravity方法中
第一个参数是将Toast显示在什么方位,这里是居住
第二个参数 设置X轴的偏移量
第三个参数 设置Y轴的偏移量
大家可以动手修改下参数,然后运行看看效果。
带图片的Toast,运行效果如下图
Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton
我们代码中用到了一个事件,叫做 _disibledevent=>
这些标注出来的地方我在代码中已经详细注释了,希望大家认真思考,弄明白。
Spinner
下拉控件在Web页面中使用的频率大家有目共睹,是一个非常重要的控件。那么在Android中,它张什么样子呢?如下图
Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton
代码及注释如下
package TSD.Jason.Example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class SpinnerActivity extends Activity { private static final String[] m_types = {"A型","B型","AB型","0型","其他"}; private Spinner m_Spinner; private ArrayAdapteradapter; @Override protected void _disibledevent=>// TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.spinner); m_Spinner = (Spinner)this.findViewById(R.id.spinner1); //将可选内容与ArrayAdapter连接 //第二个参数表示spinner没有展开前的UI类型 adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, m_types); //设置下拉列表风格 第1种 simple_spinner_dropdown_item 第2种 simple_spinner_item adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); m_Spinner.setAdapter(adapter); //设置下拉列表选中项监听事件 m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { /* * 第一个参数 是适配器 是适配器里内容的类型,可把?改成你存的类型。 * 第二个参数 是你当前选择的view * 第三个参数 是你所选项在适配器中的索引位置 * 第四个参数 选定项目的行数 */ @Override public void _disibledevent=> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub System.out.println(arg2); System.out.println(arg3); Toast.makeText(getApplicationContext(), "你选中的是" +m_types[arg2], Toast.LENGTH_SHORT).show(); } //没选中或什么都不选时调用 @Override public void _disibledevent=> arg0) { // TODO Auto-generated method stub } }); } }
下拉菜单控件还是比较简单的,这里就不在过多介绍了
RadioButton
单选按钮大家应该不陌生吧,它在Android中是什么样呢?其实刚才在下拉菜单中大家已经看到了它的样子,上图
Android开发教程 --- 葵花宝典第四层 控件之 Toast Spinner RadioButton
先看看布局文件中是如何定义的

大家注意到了吗?在RadioButton外边还嵌套了一层RadioGroup?
大家回忆一下在HTML中我们如何定义一组单选按钮呢? 是不是要通过一个叫做name的属性。将name设置为同一个名字,那么这些相同name的就在一个组中了,从而实现单选按钮效果,那么这个RadioGroup其实也类似与name属性,将一些单选按钮包裹成一组。
package TSD.Jason.Example; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class radiobuttonActivity extends Activity { RadioGroup m_RadioGroup; RadioButton m_Radio1, m_Radio2, m_Radio3, m_Radio4; @Override protected void _disibledevent=>super.onCreate(savedInstanceState); setContentView(R.layout.radiobutton); m_RadioGroup = (RadioGroup) findViewById(R.id.radioGroup1); m_Radio1 = (RadioButton) findViewById(R.id.radio0); m_Radio2 = (RadioButton) findViewById(R.id.radio1); m_Radio3 = (RadioButton) findViewById(R.id.radio2); m_Radio4 = (RadioButton) findViewById(R.id.radio3); /* 设置事件监听 */ m_RadioGroup .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void _disibledevent=>int checkedId) { // TODO Auto-generated method stub if (checkedId == m_Radio2.getId()) { DisplayToast("正确答案:" + m_Radio2.getText() + ",恭喜你,回答正确!"); } else { DisplayToast("请注意,回答错误!"); } } }); } /* 显示Toast */ public void DisplayToast(String str) { Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG); // 设置toast显示的位置 toast.setGravity(Gravity.TOP, 0, 220); // 显示该Toast toast.show(); } }

今天就先讲到这里,希望大家动手去练习,熟练使用它们。
源码已经上传到天圣达网站,大家可以去下载 http://www.bj-stl.com/android.html
Tags: 

延伸阅读

最新评论

发表评论