android笔记【三】-----事件处理

来源:互联网 发布:ods 数据仓库 数据集市 编辑:程序博客网 时间:2024/05/18 02:54

常用事件:

事件的监听类似于flash中的AS3,应该是ECMA的统一规定。

处理方法格式on+xxx  /   绑定监听器格式set+On+xxx+Listener

onClick()/setOnClickListener()

onLongClick()

onFocusChange()

onKey()

onTouch()

onCreateContextMenu()

使用:

获取控件后附加监听器如

 

 

this.but.setOnClickListener(new OnClickBut(){//匿名内部类,只使用一次。public onClick(){this.showView.setText("被点击了")}});


 或者使用内部类处理

this.but.setOnClickListener(new OnClickBut())private class OnClickBut implements OnClickListener{public onClick(View v){this.showView.setText("被点击了");}}


 

 屏幕横竖事件

设置/获取手机屏幕状态

set/getRequestedOrientaion()

onConfigurationChanged()系统设置发生改变时

当前的屏幕情况ActivityInfo.SCREEN_ORIENTAION_LANDSCAPE / PORTRAIT / UNSPECIFIED 横竖无

 

例子:

public class MainActivity extends Activity {private Button bt;private TextView tv;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        this.bt=(Button)super.findViewById(R.id.bt1);       this.tv=(TextView)super.findViewById(R.id.tv1);       this.bt.setOnClickListener(new OnButClick());          }        private class OnButClick implements OnClickListener{public void onClick(View v) {  MainActivity.this.tv.setText("点击");if(MainActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED){MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);MainActivity.this.tv.setText("现在是横屏");}elseif(MainActivity.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);MainActivity.this.tv.setText("现在是竖屏");}else{MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);MainActivity.this.tv.setText("现在是横屏");}}    }


 另外,在切换横竖屏时有很重要的一点:安卓默认是重载相应控件的这样会造成textview的字始终是默认文字。而不是“现在是横屏”、竖屏。

这就需要我们在androidManifest.xml中的那个activity标签中添加android:configChanges="orientation"表示方向设置改变时不重载。

 

设置password明文显示

可以使用password.setTransformationMethod(HideReturnTransformationMethod.getInstance())明文显示

或者password.setTransformationMethod(PasswordTransformationMethod.getInstance())星号显示

 radio控件改变事件

onCheckedChanged 实现的方法

set+OnCheckedChanged+Listener

下拉列表事件

单击

onItemClick实现方法

set+onItemClick+Listener

改变

onItemSelected

获取所选value:parent.getItemAtPosition(position).toString();

长按

onItemLongClick

多级列表:

private Spinner city = null; // 下拉列表框内容private Spinner area = null; // 二级列表private String[][] areaData = new String[][] {{ "东城", "西城", "朝阳", "大兴", "平谷" }, // 针对于一级的子信息{ "黄浦", "杨浦", "闵行" }, // 针对于二级的子信息{ "广州" } // 针对于三级的子信息}; // 子菜单项private ArrayAdapter<CharSequence> adapterArea = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.city = (Spinner) super.findViewById(R.id.city); // 取得下拉列表框this.area = (Spinner) super.findViewById(R.id.area); // 取得下拉列表框this.city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());}private class OnItemSelectedListenerImpl implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> parent, View view,int position, long id) { // 表示选项改变的时候触发MySpinnerListenerDemo.this.adapterArea = new ArrayAdapter<CharSequence>(MySpinnerListenerDemo.this,android.R.layout.simple_spinner_item,MySpinnerListenerDemo.this.areaData[position]); // 定义所有的列表项MySpinnerListenerDemo.this.area.setAdapter(MySpinnerListenerDemo.this.adapterArea);// 设置二级下拉列表的选项内容}public void onNothingSelected(AdapterView<?> arg0) { // 表示没有选项的时候触发// 一般此方法现在不关心}}


 时间选择器事件监听

实现事件:

onDateChanged

onTimeChanged

但Date的事件监听器是init,而不是listener。

this.date.init(this.date.getYear(), this.date.getMonth(),
    this.date.getDayOfMonth(), new OnDateChangedListenerImpl());
 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃奶粉上火了怎么办 我小孩不喝奶粉怎么办 2岁宝宝不喝奶粉怎么办 婴儿吃奶粉上火了怎么办 100天的宝宝咳嗽怎么办 40天的小孩咳嗽怎么办 40天的婴儿咳嗽怎么办 50天的婴儿咳嗽怎么办 宝宝20天感冒了怎么办 1个月宝宝咳嗽怎么办 40天的宝宝干咳怎么办 百天的宝宝咳嗽怎么办 50天的孩子咳嗽怎么办 百天宝宝咳嗽有痰怎么办 1岁半宝宝拉肚子怎么办 百天的宝宝拉肚子怎么办 激战2帧数三十多怎么办 太受欢迎了怎么办txt微 太受欢迎了怎么办网盘 太受欢迎了怎么办微盘 我太受欢迎了该怎么办h 我太受欢迎了该怎么办1 卡培他滨副作用怎么办 究极风暴4卡怎么办 脸下垂法令纹深怎么办 20岁有法令纹怎么办 3个月婴儿铅超标怎么办 一岁宝宝铅超标怎么办 小樱死了 佐助怎么办 平板玩游戏闪退怎么办 手机玩游戏闪退怎么办 天天爱消除闪退怎么办 半夜牙疼的厉害怎么办 心眼特别小的人怎么办 自己心眼太小了怎么办 我心眼小爱生气怎么办 公章颜色不红了怎么办 香港逗留超过7天怎么办 酷骑倒闭了押金怎么办 吃了芝麻和鸡肉怎么办 罗汉鱼嘴唇烂了怎么办