源码-android luancher 拖动问题

问题描述

android luancher 拖动问题

需求是根据luancher源码,然后去掉主菜单,吧所有的app显示在桌面上。
public class Launcher extends Activity implements DragSource,DragScroller,AllAppsPaged.InitDragScoller,DropTarget,DragController.DragListener

private void setupViews()
{
    final DragController dragController = mDragController;

    mDragLayer = (DragLayer)findViewById(R.id.drag_layer);
    m_allApps = (AllAppsPaged)findViewById(R.id.launcher);

    mDragLayer.setup(this, dragController);
    m_allApps.setHapticFeedbackEnabled(false);
    // Setup the workspace
    dragController.addDragListener(m_allApps);
    initDragScroller(dragController, m_allApps, mDragLayer);
}

    @Override
public void initDragScroller(DragController dragController, AllAppsPaged appsPaged, DragLayer dragLayer)
{
    dragController.setDragScoller(appsPaged);
    dragController.setScrollView(dragLayer);
    dragController.setMoveTarget(appsPaged);

    dragController.addDropTarget(appsPaged);
}

private DropTarget findDropTarget(int x, int y, int[] dropCoordinates)
{
    final Rect r = mRectTemp;

    final ArrayList<DropTarget> dropTargets = mDropTargets;
    final int count = dropTargets.size();
    for (int i = count - 1; i >= 0; i--)
    {
        DropTarget target = dropTargets.get(i);
        if (!target.isDropEnabled())
        {
            continue;
        }
        target.getHitRect(r);

        // Convert the hit rect to DragLayer coordinates
        target.getLocationInDragLayer(dropCoordinates);
        r.offset(dropCoordinates[0] - target.getLeft(), dropCoordinates[1] - target.getTop());

        mDragObject.x = x;
        mDragObject.y = y;
        if (r.contains(x, y))
        {
            DropTarget delegate = target.getDropTargetDelegate(mDragObject);
            if (delegate != null)
            {
                target = delegate;
                target.getLocationInDragLayer(dropCoordinates);
            }
            // Make dropCoordinates relative to the DropTarget
            dropCoordinates[0] = x - dropCoordinates[0];
            dropCoordinates[1] = y - dropCoordinates[1];
            return target;
        }
    }
    return null;
}

在findDropTarget这个函数中,一直返回null,请问是哪里的问题?

以上代码跟原生luancher唯一不同的就是就是setupviews的地方。
原生luancher的代码:
// Setup the drag controller (drop targets have to be added in reverse order in prioriyt)
    dragController.setDragScoller(mWorkspace);
    dragController.setScrollView(mDragLayer);
    dragController.setMoveTarget(mWorkspace);
    dragController.addDropTarget(mWorkspace);

解决方案

http://blog.csdn.net/gf771115/article/details/8152837

时间: 2024-10-28 09:50:07

源码-android luancher 拖动问题的相关文章

H264解码器源码(Android 1.6 版)

原文:http://www.cnblogs.com/mcodec/articles/1780598.html H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过. 程序的采用jni架构.界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求. 在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点. 如果

源码-android 系统如何给功能打宏开关?

问题描述 android 系统如何给功能打宏开关? 比如:我做了一个通话自动录音的功能,改了源码,功能实现了,但现在问题来了,有的 客户需要这个功能,有的客户不需要这个功能,所以,想给它添加一个开关,需要这个功能的客户,将其开关打开,不需要此功能的客户,在编译系统的时候将其关闭,现在 需要了解开关是在哪个地方加,加到哪个文件里面,如何读取这个开关. 望大神指点.谢谢! 解决方案 定义全局变量Config控制, gradle打包时改变变量 解决方案二: 定义全局变量Config控制, gradle

源码-android 编程如何发邮件??

问题描述 android 编程如何发邮件?? 找了好多源码照着写 结果都没能够成功发送邮件 我想实现的功能是静默发送邮件 求大神指点 解决方案 如果你看了很多代码都没有实现,那么很可能你的邮件服务商有问题,比如不支持你通过smtp协议发邮件,你的端口.用户名.密码等不正确,或者你的邮件被视作垃圾邮件而被拒绝发送. 建议你换一个邮件商,最好用付费的商业邮箱. 解决方案二: 你需要研究一下邮件协议:SMTP.POP3.IMAP4等

源码-Android中事件传递机制原理

问题描述 Android中事件传递机制原理 我们知道,所有的控件直接或间接的继承子View,View的子类有ViewGroup,并且ViewGroup的子类也会有其他的子View,那么他们之间事件的传递机制是怎样的?对源码有研究的吗? 解决方案 android事件传递机制Android 事件的传递机制Android之事件传递机制 解决方案二: http://blog.csdn.net/pi9nc/article/details/9281829http://www.csdn123.com/html

源码-android机器中连接VPN成功之后叮的一声怎么实现的?

问题描述 android机器中连接VPN成功之后叮的一声怎么实现的? 如题,表示没有找到源码里面有这块,不知道哪位在知道? 声音与notification的声音是一样的. 解决方案 之前做过notification的提示音,就是播放指定的音频文件,使用系统的也可以,连接VPN提示音也可以这样做

源码-android中FLAG_ACTIVITY_NEW_TASK问题

问题描述 android中FLAG_ACTIVITY_NEW_TASK问题 在service中启动activity,要添加一句 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 但添加后,新的activity不能正常显示,怎么办?附源码: Intent intent = new Intent(); //指定动作名称 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Dev

源码-Android调用连连支付的支付接口

问题描述 Android调用连连支付的支付接口 现在在做一个Android支付平台,客户要求调用连连支付的接口,请问如何实现?最好附上源码,3QS!!! 解决方案 请看下支付宝或者微信支付的官方文档

源码-android在service中启动Activity问题

问题描述 android在service中启动Activity问题 问什么我在service中启动activity,新的activity闪了一下就被原来的覆盖了?附源码: 这段代码在service中,想弹出"激活设备管理器"页面的功能 Intent in = new Intent(); in.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

源码-Android侧滑菜单,覆盖内容

问题描述 Android侧滑菜单,覆盖内容 点击按钮后弹出侧滑菜单,覆盖原有的界面一部分.最好有源码,谢谢了 解决方案 可以用popupwindow实现 解决方案二: 可以参考以下链接,有源码 Android阶篇4-实现侧滑菜单框架http://www.myexception.cn/android/1449729.html 解决方案三: Android阶篇4-实现侧滑菜单框架http://www.360doc.com/content/13/0906/17/7857928_312672793.sh