(7)Launcher3客制化之,改动单屏幕后,Fix在Hotseat拖动应用删除报错

改动单屏幕后,在workspace里面拖动图标。到删除button上松开的时候,报错问题。

而且无法再次显示拖动的图标。

拖动松开手时候触发

public void onDropCompleted(final View target, final DragObject d,
            final boolean isFlingToDelete, final boolean success) {

        if (mDeferDropAfterUninstall) {//假设要卸载软件又一次调用一次
            mDeferredAction = new Runnable() {
                    public void run() {
                        onDropCompleted(target, d, isFlingToDelete, success);
                        mDeferredAction = null;
                    }
                };
            return;
        }

        boolean beingCalledAfterUninstall = mDeferredAction != null;

        if (success && !(beingCalledAfterUninstall && !mUninstallSuccessful)) {
            if (target != this && mDragInfo != null) {
                CellLayout parentCell = getParentCellLayoutForView(mDragInfo.cell);
                if (parentCell != null) {
                    parentCell.removeView(mDragInfo.cell);
                }
                if (mDragInfo.cell instanceof DropTarget) {
                    mDragController.removeDropTarget((DropTarget) mDragInfo.cell);
                }
                // If we move the item to anything not on the Workspace, check if any empty
                // screens need to be removed. If we dropped back on the workspace, this will
                // be done post drop animation.
                stripEmptyScreens();
            }
        } else if (mDragInfo != null && target != null && (!(target instanceof InfoDropTarget))) {
            CellLayout cellLayout;
            if (mLauncher.isHotseatLayout(target)) {
                cellLayout = mLauncher.getHotseat().getLayout();
            } else {
                cellLayout = getScreenWithId(mDragInfo.screenId);
            }
            
//            if (cellLayout == null) {
//                throw new RuntimeException("Invalid state: cellLayout == null in "
//                        + "Workspace#onDropCompleted. Please file a bug. ");
//            }
            在此处增加这两句就可以修复此BUG
            if (cellLayout != null) {
                cellLayout.onDropChild(mDragInfo.cell);
            }
            
            if( mDragInfo.cell!=null){
            <span style="white-space:pre">	</span>  mDragInfo.cell.setVisibility(VISIBLE);
            }
        }
        if ((d.cancelled || target instanceof InfoDropTarget || (beingCalledAfterUninstall && !mUninstallSuccessful))
                && mDragInfo.cell != null) {
            mDragInfo.cell.setVisibility(VISIBLE);
        }
        
       
        mDragOutline = null;
        mDragInfo = null;
   
    }
				
时间: 2024-12-21 11:57:23

(7)Launcher3客制化之,改动单屏幕后,Fix在Hotseat拖动应用删除报错的相关文章

(7)Launcher3客制化之,修改单屏幕后,Fix在Hotseat拖动应用删除报错

修改单屏幕后,在workspace里面拖动图标,到删除按钮上松开的时候,报错问题. 并且无法再次显示拖动的图标. 拖动松开手时候触发 public void onDropCompleted(final View target, final DragObject d,             final boolean isFlingToDelete, final boolean success) {         if (mDeferDropAfterUninstall) {//如果要卸载软件

(8)Launcher3客制化之ContentProvider内容提供者,实现其他应用修改数据库更新等操作

首先添加两个权限 <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/> <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS"/> 这两个是修改 桌面的数据库的权限 不添加就修改不了哦 直接通过内容提供者获取数据, static Ar

android STK名称客制化

例如,针对联通定制版,要实现将SIM卡应用名称动态修改成运营商名称: 背景: 1. 由于SAT应用是动态安装的,launcher菜单中的SIM卡应用图标是Stk1.apk的图标. 2. 运营商的名称是存储在: 卡1: TelephonyProperties.PROPERTY_OPERATOR_ALPHA 卡2: TelephonyProperties.PROPERTY_OPERATOR_ALPHA_2 客制化步骤: 1.   从SystemProperty中获取卡的运营商名称 1.1.GB3版本

Workflow_客制化BusinessEvent进行消息传递(案例)

2014-06-27 BaoXinjian 一.摘要 在之前的博文中介绍了,如何获取从标砖business event抓取消息,如supplier event, 其实质,就是在supplier的任何create, update, delete的处理,都是通过interface和api进行处理的, 而在处理interface和api的package中都会通过wf_event.raise将消息进行传递出来 再通过其他的package对在队列中的消息进行处理,从而实现消息的异步处理,实现interfa

客制化“*#0*#”恢复出厂设置

客制化"*#0*#"恢复出厂设置 packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java private static final String MMI_RESET_PHONE = "*#0*#";public static final String FORMAT_AND_FACTORY_RESET = "com.android.internal.os.storage.

Dynamics AX 2012 R2 客制化RDP报表参数对话框

    当我们在使用RDP报表时,AX会根据Data Contract,自动生成报表参数对话框上的字段控件.一般情况下,该对话框能够满足我们的需求,但是如果有较为复杂或特殊的需求,就要我们对该对话框进行客制化.     Reinhard这里就有一张报表,需要使用员工编号作为参数.但是AX系统中默认的员工编号EDT,没有提供lookup方法.Reinhard将该员工编号EDT放在报表参数窗体上后,只能手工录入员工编号,不能通过下拉框进行选择.     默认效果是这样:     但是 Reinhar

简单的博客页面客制化

DIY博客的页面 写在前面: 申请了博客第一件事当然是整一个炫酷的界面. 自己水平不够,选了个比较顺眼的皮肤,大部分是套用网上现成的模板完成的. 具体定制的内容: 1.字体的修改 2.版面占比的调整 3.UI细节的修改 4.加入了用户头像 和 一些修饰动图 5.时钟,访问统计,Github conner,天气,Live2d看板娘,分享栏,回到顶部按钮 等小插件 6.图片放大功能 7.3D效果标签云 8.背景图更换 9.背景漂浮线段的动态效果 10.鼠标点击现字的特效 11.QQ联系 和 打赏功能

Oracle EBS12.2 注册客制化应用

一.Oracle APP和DB的基本信息 1.应用和数据库环境: Application Node in Linux7.3 Database Node on Linux 7.3 2.Oracle EBS 应用版本: R12.2.6 on Linux7.3  x_86(64bit) 3.数据库信息: Oracle  Database R12.1.0.2 on Linux 7.3 x_86(64bit) 二.实现步骤 1.在数据库中创建cux用户,并授权.相关命令如下: --(1)创建cux用户  

BEvent_客制化BusinessEvent通过Workflow接受消息传递(案例)

2014-08-03 Created By BaoXinjian