android view控件位置的问题总结

        写android也有一段时间了,自定义控件也写了无数个了。但是对于里面的很多迷惑的知识,老是记不住,每次写的时候都要重新在网上查。总感觉这样也不是一回事,因此在这里做笔记,以后方便查询吧。

       1.   onTouch(View v, MotionEvent event)

              event.getX()手指点击相对于点击控件的x;

              event.getRawx();手机点击的位置相对于屏幕左上方的位置;

              v.getx()是相对于父控件的位置;

             模型讲解看链接:  点击打开链接

             

       2.view.layout(int l, int t, int r, int b).

              四个参数为左上角的(x1,y1),右下角的(x2,y2);其中的位置为相对父控件的位置

       3. LayoutParams

            x:与Gravtiy的相对位置。如果忽略gravity则表示距离屏幕左上角的绝对位置。

       4.

          1.当ACTION_DOWN返回false时,此时标记为点下,表现为按钮深色。为ture时,没有点击动作产生

          2.当ACTION_UP返回false是,此时标记为释放点击,表现为按钮由深色释放。为true时,若前面有点下的动作,此时不会释放。

          3.只有外完成了上面两个点击、释放动作以后,才会产生onclick的操作。因此ontouch多返回为false时,比较全面。

          4.点击打开链接

          5.ontouch返回为true则表明此次动作消费。(?)

  public boolean onTouch(View v, MotionEvent event) {


            switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:
                //ACTION_DOWN返回为false时,标记为点击事件。由此才可能触发onclick。
                return true;
            case MotionEvent.ACTION_MOVE:
                Log.e("move", "s");
                return false;
            case MotionEvent.ACTION_UP:

                Log.e("up", "s");

              ///.ACTION_UP:为false时,也标记为点击事件,此时才能触发onclick

                return false;

            // TODO Auto-generated method stub

        }

       6.当子层捕获了点击事件,返回为true时,则父层不会继续捕获点击事件。若返回为false,则父层会继续捕获点击事件。当子层没有对点击事件写监听器时,则不会捕获点   击事件。如果没有重载ontouch函数,并设置其返回值,只要子层写了监听事件,则默认子层应该返回true。


      

             

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值