and12

本文介绍了一种在Android中实现的特殊UI效果——拖动时显示翅膀动画的方法。该动画会在用户拖动屏幕上的元素时出现,并随着元素的移动而变化。文章详细描述了如何根据当前的操作状态和屏幕位置来启动和更新动画,以及如何绘制左右两侧的辅助图像。
private void drawWingsImg(Canvas canvas) {
if (workspace.isScrollerFinished()) {
if (mDragging) {
if (transferAt == null) {
startWingsAnimation(WINGS_START_VECTOR, WINGS_END_VECTOR, WINGS_INCREMENT, WINGS_SLEEP_TIME);
}

if (!transferAt.isAlive() && needWingsAnimation) {
if (changeWingsAnimationState) {
if (transferAtListener.getAnimationState() == DragLayerAnimationThread.MOVE_IN
&& transferAt.getCurrentScale() > WINGS_START_VECTOR) {
startWingsAnimation(transferAt.getCurrentScale(), WINGS_START_VECTOR, WINGS_INCREMENT,
WINGS_MOVE_IN_SLEEP_TIME);
} else if (transferAtListener.getAnimationState() == DragLayerAnimationThread.MOVE_OUT
&& transferAt.getCurrentScale() < WINGS_END_VECTOR) {
startWingsAnimation(transferAt.getCurrentScale(), WINGS_END_VECTOR, WINGS_INCREMENT,
WINGS_MOVE_OUT_SLEEP_TIME);
}
} else {
startWingsAnimation(WINGS_START_VECTOR, WINGS_END_VECTOR, WINGS_INCREMENT, WINGS_SLEEP_TIME);
}
}
} else {
if (transferAt != null) {
if (transferAt.isAlive()) {
transferAt.setAnimationState(AnimationThread.STATE_ZOOM_OUT);

} else if (needWingsAnimation && transferAt.getCurrentScale() != WINGS_START_VECTOR) {

startWingsAnimation(transferAt.getCurrentScale(), WINGS_START_VECTOR, WINGS_INCREMENT,
WINGS_SLEEP_TIME);
}
} else {
return;
}
}

int currentScreen = workspace.getCurrentScreen();
int currentGroup = workspace.getCurrentGroup();


if (currentScreen != 0 || currentGroup != 0) {
drawLeftDragImg(canvas);
}


if (currentScreen != 1
|| currentGroup != GroupInfoProvider.getInstance(getContext()).getGroupCount() - 1) {
drawRightDragImg(canvas);
}
}
}

private void drawLeftDragImg(Canvas canvas) {
int offset = getDragWingsOffset();
Drawable leftDragNormal = getResources().getDrawable(R.drawable.left_drag_normal);
Drawable leftDrag = getResources().getDrawable(R.drawable.left_drag);
Bitmap arrowheadLeftNormal = BitmapFactory.decodeResource(getResources(), R.drawable.arrowhead_left_normal);
Bitmap arrowheadLeft = BitmapFactory.decodeResource(getResources(), R.drawable.arrowhead_left_active);

canvas.save();
canvas.translate(transferAt.getCurrentScale(), 0);
if (mScrollState == SCROLL_WAITING_IN_ZONE && mScrollRunnable.mDirection == SCROLL_LEFT) {

leftDrag.setBounds(0, offset, SCROLL_ZONE_IMG_WIDTH, offset + calculate.getDragWingsHeight());
leftDrag.draw(canvas);

canvas.drawBitmap(arrowheadLeft, (SCROLL_ZONE_IMG_WIDTH - arrowheadLeft.getWidth()) / 2, getHeight() / 2
- arrowheadLeft.getHeight() / 2, imgPaint);
} else {
leftDragNormal.setBounds(0, offset, SCROLL_ZONE_IMG_WIDTH, offset + calculate.getDragWingsHeight());
leftDragNormal.draw(canvas);

canvas.drawBitmap(arrowheadLeftNormal, (SCROLL_ZONE_IMG_WIDTH - arrowheadLeftNormal.getWidth()) / 2, getHeight() / 2
- arrowheadLeftNormal.getHeight() / 2, imgPaint);
}
canvas.restore();
}
<think>首先,用户的问题是:"但是我表里有一个数据是:年龄小于3岁或大于12岁 是否可以写between 3 and 12呢?" 翻译成英文是:"But in my table, there is data where age is less than 3 or greater than 12. Can I write BETWEEN 3 AND 12?" 用户的问题是基于之前的上下文,但在这个新查询中,我需要直接回答。用户正在询问是否可以使用BETWEEN 3 AND 12来查询年龄小于3或大于12的数据。 关键点: - BETWEEN 3 AND 12 在SQL中表示值在3到12之间(包含边界),即 age >= 3 AND age <= 12。 - 用户想要的是年龄小于3或大于12,即 age < 3 OR age > 12。 所以,答案是否定的。不能使用BETWEEN 3 AND 12来获取小于3或大于12的值,因为BETWEEN是包含在范围内的。 我需要用中文回答,因为用户指定了"请使用中文回答问题"。 回答结构: 1. 先回答问题:直接说明是否可以使用BETWEEN。 2. 解释原因:因为BETWEEN是用于范围内的值,而用户想要的是范围外的值。 3. 提供替代方案:建议使用逻辑运算符,如 age < 3 OR age > 12。 4. 然后,根据规则,在回答末尾添加"§§相关问题§§",并列出3-5个相关问题。 规则回顾: - 回答完问题后,必须提出3-5个 §§相关问题§§。 - 第一行必须完整输出 "§§相关问题§§",禁止换行分散。 - 相关问题必须基于用户的问题和我的回答。 - 格式:在回答后,输出"§§相关问题§§",然后列出问题,用数字点号。 基于用户的问题和我的回答,我可以提出相关问题,比如: 1. 如何在Oracle中查询范围外的值? 2. BETWEEN操作符的替代方案是什么? 3. 处理日期范围时的注意事项。 4. 性能优化建议。 5. 其他SQL操作符的比较。 制定相关问题: 1. 在Oracle中,如何高效地查询不在某个范围内的数据(例如年龄小于3或大于12)? 2. 除了使用OR操作符,还有哪些方法可以实现范围外查询? 3. BETWEEN AND操作符在处理数值和字符串时有哪些限制? 4. 如何优化包含OR条件的查询性能? 5. 在Oracle中,NOT BETWEEN的用法是什么?它是否比使用OR更高效? 确保问题是相关的、有意义的。 完整回答: - 开头:直接回答。 - 解释。 - 建议。 - 然后"§§相关问题§§"和列表。</think>在Oracle SQL中,**不能**使用`BETWEEN 3 AND 12`来查询年龄小于3岁或大于12岁的数据。原因在于,`BETWEEN AND`操作符用于指定一个闭区间范围(包含边界),例如`BETWEEN 3 AND 12`等价于`age >= 3 AND age <= 12`,这会返回年龄在3到12岁之间的记录,而不是你需要的范围外数据。 如果你要查询年龄小于3岁或大于12岁的数据,应该使用逻辑运算符`OR`来组合条件,例如: ```sql SELECT * FROM your_table WHERE age < 3 OR age > 12; ``` 或者使用`NOT BETWEEN`操作符(但需注意`NOT BETWEEN`等价于`age < 3 OR age > 12`,与直接使用`OR`效果相同)。这种方式更清晰且逻辑正确,能准确返回所需结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值