博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
疯狂Android入门_事件处理
阅读量:6281 次
发布时间:2019-06-22

本文共 3642 字,大约阅读时间需要 12 分钟。

Android事件处理:

---------------------------------------------------------------------

1.基于监听的事件处理方式

事件:Event Source,Event,Event Listener。

监听步骤:获取控件对象---实现某一个XxxListener监听器接口---将监听器通过setXxxListener绑定在控件对象上。

Listener接口:OnClickListener,OnKeyListener,OnLongClickListener,OnTouchListener,OnFocusChangeListener,OnCreateContextMenuListener,OnCheckChangeListener,……。

监听器的实现方式:

(1)内部类形式

View Code
public class EventQs extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //获取应用程序中的bn按钮        Button bn = (Button)findViewById(R.id.bn);        //为按钮绑定事件监听器。        bn.setOnClickListener(new MyClickListener());    }    //定义一个单击事件的监听器    class MyClickListener implements View.OnClickListener    {        //实现监听器类必须实现的方法,该方法将会作为事件处理器        @Override        public void onClick(View arg0)        {            EditText txt = (EditText)findViewById(R.id.txt);            txt.setText("bn按钮被单击了!");        }            }}

(2)外部类形式

(3)匿名内部类形式

View Code
public class AnonymousListener extends Activity{    EditText show;    Button bn;        @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        show = (EditText)findViewById(R.id.show);        bn = (Button)findViewById(R.id.bn);        //直接使用Activity作为事件监听器        bn.setOnClickListener(new OnClickListener()        {            //实现事件处理方法            @Override            public void onClick(View v)            {                // TODO Auto-generated method stub                show.setText("bn按钮被单击了!");            }                    });    }}

(4)Activity本身作为事件监听器类

View Code
//实现事件监听器接口public class ActivityListener extends Activity    implements OnClickListener{    EditText show;    Button bn;    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        show = (EditText)findViewById(R.id.show);        bn = (Button)findViewById(R.id.bn);        //直接使用Activity作为事件监听器        bn.setOnClickListener(this);    }    //实现事件处理方法    @Override    public void onClick(View v)    {        // TODO Auto-generated method stub        show.setText("bn按钮被单击了!");    }}

(5)直接绑定到标签 

 

---------------------------------------------------------------------

2.基于回调的事件处理方式。

View类的回调方法:onKeyDown(),onKeyLongPress(),onKeyShortcut(),onKeyUp(),onTouchEvent(),onTrackballEvent()。

基于回调的事件处理还常用自定义View类来实现:重写View的事件处理方法。

View Code
public class DrawView extends View{    public float currentX = 40;    public float currentY = 50;    /**     * @param context     */    public DrawView(Context context , AttributeSet set)    {        super(context , set);    }    @Override    public void onDraw (Canvas canvas)    {        super.onDraw(canvas);        //创建画笔        Paint p = new Paint();        //设置画笔的颜色        p.setColor(Color.RED);        //绘制一个小圆(作为小球)        canvas.drawCircle(currentX , currentY , 15 , p);            }    @Override    public boolean onTouchEvent(MotionEvent event)    {        //当前组件的currentX、currentY两个属性        this.currentX = event.getX();        this.currentY = event.getY();        //通知改组件重绘        this.invalidate();        //返回true表明处理方法已经处理该事件        return true;    }    }//

基于回调的事件传播:返回true不会对外传播,返回false对外传播。

 

3.Configuration系统设置:手机设备上的配置信息(屏幕,网络信号等)

获取对象:Configuration cfg = getResources().getConfiguration();

Configuration对象中有许多表示系统配置信息的属性:……。

相应系统设置更改:@ onConfigurationChanged()方法。

 

转载于:https://www.cnblogs.com/wzmmao/archive/2012/09/20/2599964.html

你可能感兴趣的文章
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>