- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义 View ,我在其中实现了 onDraw,它成功地绘制了背景以及右上角的小叠加图像。我通过以下操作手动为覆盖图像(带有 ScaleAnimation 和 Rotate Animation 的 AnimationSet)设置动画:
final AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(scaleAnimation);
animationSet.addAnimation(rotationAnimation);
animationSet.setFillAfter(true);
post(new Runnable() {
@Override
public void run () {
animationSet.start();
new Handler().post(getAnimationRunnable(animationSet));
}
private Runnable getAnimationRunnable (final AnimationSet animationSet) {
return new Runnable() {
@Override
public void run () {
final Transformation outTransformation = new Transformation();
if (animationSet.getTransformation(System.currentTimeMillis(), outTransformation)) {
// store matrix for applying in onDraw
mMatrix = outTransformation.getMatrix();
// THIS INVALIDATE DOESN'T WORK
parent.invalidate(new Rect(getParentInvalidateRect()));
post(getAnimationRunnable(animationSet));
}
}
};
}
});
如果我这样使自定义 View 无效...
// THIS INVALIDATE DOES WORK
invalidate(getOverlayClientRect());
然后动画出现了,一切都很好,除了动画图像现在被剪裁了——因为它被放大了,超出了上边界和右边界。
但是当我将一个 Rect 传递给与自定义 View 右上角区域相交的 parent.invalidate() 时,它不会触发自定义 View 的 onDraw。
所以...
最佳答案
经过大量搜索,答案显而易见。我只需要将父级的 clipChildren 属性设置为 false。不需要使父 View 无效,只需使自定义 View 无效。
这在 4.0.3 平板电脑上运行良好。但是,在 Galaxy Nexus (4.2.2) 上,它不仅在动画期间渲染到边界之外,而且实际上只是清除了传递给无效的 Rect 的背景。因此,当动画完成后,图像的一些残余在 Rect 之外仍然可见。解决方案是传递一个足够大的 Rect,以覆盖动画期间绘制的最大位图。
关于android - 自定义 View 中的 ScaleAnimation 被剪裁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711725/
我正在使用 ScaleAnimation。我想将我的商品尺寸扩大一倍,这很简单: ScaleAnimation setSizeForTop = new ScaleAnimation(1, 2, 1,
所以下面的动画按预期工作: Animation scaleUp = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, A
我的自定义 ScaleAnimation 似乎忽略了它的枢轴点。这是我的 super 电话: super(1.0f, widthFactor, 1.0f, heightFactor, pivotX,
我的布局结构如下: LinearLayout1 LinearLayout2 EditText 我正在使用 LayoutAnimationController 将 ScaleAnimation 应用于
这是我的自定义 ScaleAnimation: public class MyScaler extends ScaleAnimation { private static final Stri
关闭。我是自己用Timer做的,在看了书之后重写了draw方法。 最佳答案 不要调用 animation.startAnimation(animation)。只需调用 startAnimation(a
我想要垂直缩放 ImageView,等待,然后在同一个 ImageView 上执行另一个缩放。我简化了下面的代码,但这本质上是我想要做的: ScaleAnimation animate = new S
我有一个自定义 View ,我在其中实现了 onDraw,它成功地绘制了背景以及右上角的小叠加图像。我通过以下操作手动为覆盖图像(带有 ScaleAnimation 和 Rotate Animatio
我有一个问题: 我在我的项目中实现了拖放功能,其中一些图标模拟了 android 2.2 的拖放操作。 因此,当您单击图标一秒钟时,您可以开始移动手指并将图标插入屏幕的任何部分。 android 2.
我在 ImageView 中一个接一个地应用三个动画。我为每个动画都有一个 AnimationListener,所以在 onAnimationEnd 中,我开始下一个,所以它们不会重叠。动画是这样的:
我们正在使用 TouchImageView 并希望实现 onDoubleTap 缩放 ...到目前为止一切顺利。 问题是: 如果我们应用缩放动画并设置setFillAfter(false),在Anim
我正在尝试使用 ScaleAnimation 从 View 的中心向右和向左缩放 View 。无论我为 pivotX 和 PivotY 设置什么值,它总是以相同的方式缩放(就像右边缘似乎在缩放保持左边
我有一个显示“登录”的按钮。当用户点击它时,它会弹出一个警告对话框,其中包含用户登录信息。一旦用户输入他们的信息并点击确定,按钮就会拉伸(stretch)到包含“欢迎,[用户名]”所需的宽度。我想要做
我正在尝试将缩放动画应用到矩形,使用代码而不是 xml。我想让矩形变高,很简单。 RectDrawableView - 创建一个 RectShape ShapeDrawable public clas
这听起来可能很愚蠢,但我无法在任何地方找到如何指定 ScaleTAnimation 的 pivotXType 和 pivotYType。 我知道如何以编程方式进行,但我需要通过 XML 指定它(我需要
我是一名优秀的程序员,十分优秀!