首先让我解释一下我的目标。我试图使Animation
改变的属性ArcShape
。一个ArcShape's
构造函数有两个领域:startAngle
和sweepAngle
。我想设置动画sweepAngle
,使其在屏幕上显示为不断缩小的圆圈。
您可以通过想象PacMan来描绘此动画。想象一下他的嘴巴是闭合的。这种动画效果类似于他越来越张开上颚,直到不再有吃豆人为止。
现在…我在实现此问题上有两个问题。首先,ArcShape
创建后,就没有内置的更改方法sweepAngle
。这使我想到了第一个问题:是否有任何方法可以覆盖ArcShape
和实现某些setSweepAngle
方法?还是我必须new ArcShape
为每个sweepAngle
要显示的内容创建一个?
现在转到第二个问题…假设我找到了第一个问题的解决方案,那么我该如何创建它Animation
呢?这是我现在拥有的要点:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape's sweepAngle to currAngle. But HOW?
}
}
我找到了解决方案。我有一个扩展的类,View
我们称其为Pacman
我的自定义嵌套Animation
在Pacman
该类中。这让我访问member variables
了的Pacman
类。
public class Pacman extends View {
float mSweepAngle;
...
//include constructors
//override onMeasure
...
/* Here we override onDraw */
@Override
protected void onDraw(final Canvas canvas) {
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
RectF oval = new RectF(canvas.getClipBounds());
canvas.drawArc(oval, 0, mCurrAngle, true, p);
}
/* Here we define our nested custom animation */
public class OpenPacman extends Animation {
float mStartAngle;
float mSweepAngle;
public OpenPacman (int startAngle, int sweepAngle, long duration) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
setDuration(duration);
setInterpolator(new LinearInterpolator());
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
Pacman.this.mCurrAngle = -currAngle; //negative for counterclockwise animation.
}
}
}
现在,当自定义动画更新容器类时mCurrAngle
,会onDraw
被自动调用,从而绘制相应的ArcShape
。
问题内容: 我有一个ListView,其行中应具有以下布局: 应该是静态的,但每隔几秒钟就会更改一次。 我通过填充,将其传递给并在每次数据更改时进行设置来实现它: 我的问题是我不知道如何以上述格式显示数据。 提前致谢。 问题答案: 将此添加到你的布局文件夹 使你的主要xml布局如下 这是你的适配器 你的Java活动
很多时候,我们需要将TextView的字体自动调整到给定的边界。 可悲的是,即使有很多线程和帖子(以及建议的解决方案)在谈论这个问题(这里,这里和这里的例子),但没有一个实际工作得很好。 这就是为什么,我决定测试他们每一个直到我找到真正的交易。 我认为这样一个textView的要求应该是: > 应允许使用任何字体、字体、样式和字符集。 应同时处理宽度和高度 没有截断,除非文本不能适合,因为限制,我
我想通过一个自定义的泛型unapply函数压缩我的计算器,该函数计算参数并在成功时返回值。 但是这失败了,错误 有什么方法可以实现这一点吗?我已经研究了类型标签,不适用方法的隐式转换,但我不知道如何将它们集成到这个问题中。如何正确定义Eval?
问题内容: 如果我为桌面启动它,它运行得很好,但是为我的Android导出后,它在我启动该应用程序后立即崩溃。 所以我的问题…: 它适用于台式机而不适用于我的Android有什么问题? 。 Logcat 我是Java的新手,所以我希望它是正确的部分:x 问题答案: 有一些人例外,logcat说: 这是由于您的模拟器未将gpu用于图形处理,最好的解决方案是使用手机来测试您的应用程序 由于某些原因(可
我正在Android Studio做一个项目。突然,自动导入在android studio中对android类停止工作,比如android.Widgets.TextView等。在我的设置中,自动导入是启用的。如果我编写import android.widget.TextView,那么TextView将显示在auto import框中。
我有一些自定义角色,例如: 当使用'ROLE_USER'时,“spans”中的文本可以正常显示,但当使用其他角色时,文本无法显示。然后我在自定义角色中添加'ROLE_'前缀,它又变得正常了。 我尝试删除“ROLE\uu0”前缀约束,如下所示: 它也不起作用。知道如何删除强制的“ROLE\uuux”前缀吗?