换位实例代码

本文介绍了一种用于视图管理的算法,该算法通过findNearestArea方法找到最近的区域,并更新视图的位置和容器属性。适用于Dock栏图标大小小于5的情况,能够有效地调整视图位置并解决图标之间的相对位置关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
(int) mDragViewVisualCenter[1], 1, 1, mDragTargetLayout, mTargetCell);

Log.e("mylog", " mTargetCell="+mTargetCell[0]+","+mTargetCell[1]+" item.cellX="+item.cellX+" isDock="+isDock+" dockIconSize="+dockIconSize);

if(isDock && dockIconSize < 5){
if(item.container != -101){
item.container = -101;
item.cellX = mTargetCell[0];
item.cellY = mTargetCell[1];
item.screen = mTargetCell[0];
for(int i=0; i < dockIconSize ; i++){
View aView = layout.getChildrenLayout().getChildAt(i);
ItemInfo info2 = (ItemInfo) aView.getTag();
if(info2.cellX >= mTargetCell[0]){
Log.w("mylog","2 = i="+i);
int m = info2.cellX +1;
if(m > dockIconSize){
m = dockIconSize;
}
info2.cellX = m;
info2.screen = m;
}
layout.animateChildToPosition(aView, info2.cellX, info2.cellY, 0, 0,mRealTimePosition);
}

}

if(item.container == -101){
Log.e("mylog", "onDropover ///size="+ dockIconSize+" mTargetCell="+mTargetCell[0]+" item.cellX="+item.cellX);
for(int i=0; i < dockIconSize ; i++){
View aView = layout.getChildrenLayout().getChildAt(i);
ItemInfo info2 = (ItemInfo) aView.getTag();
Log.i("onDrop", "=====i="+i+" info="+info2+", x="+info2.cellX+","+info2.cellY+",screen ="+info2.screen+","+info2.spanX+","+info2.spanY);
if(item.cellX < mTargetCell[0]){
if (info2.cellX == mTargetCell[0] ) {
Log.w("mylog","1 = i="+i);
int m = info2.cellX - 1;
if(m < 0){
m = 0;
}
info2.cellX = m;
info2.screen = m;
}
}
if(item.cellX > mTargetCell[0]){
if (info2.cellX == mTargetCell[0]) {
Log.w("mylog","2 = i="+i);
int m = info2.cellX + 1;
if(m > dockIconSize){
m = dockIconSize;
}
info2.cellX = m;
info2.screen = m;
}
}
Log.i("onDrop", "i="+i+" info="+info2+", x="+info2.cellX+","+info2.cellY+",screen ="+info2.screen+","+info2.spanX+","+info2.spanY);
layout.animateChildToPosition(aView, info2.cellX, info2.cellY, 0, 0,mRealTimePosition);
// LauncherModel.updateItemInDatabase(mLauncher, info2);
invalidate();
}
item.cellX = mTargetCell[0];
item.screen = mTargetCell[0];
// layout.setGridSize(dockIconSize+1, 1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值