我是phonegap / java的新手。因为Android中的CSS动画/ Javascript动画很慢,所以我正在尝试创建一个Phonegap插件,它会将一个原生的android动画放在webview Phonegap使用的“top”上。
示例:资产HTML中的时钟背景,以及一个'handRotation'插件,它将在webview上放置一个旋转手的原生android动画。
如果不清楚请告诉我。我会继续尝试看看这是否可行,并在此发布我的发现,但我们非常感谢您的帮助!
*** UPDATE
我明白了。
所以,鉴于你已经通过了Phonegap Plugin tutorial并且你正在你的课程中扩展插件,这就是我所做的:
public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
// TODO Auto-generated method stub
new Thread(new Runnable(){
public void run(){
final SampleView hands = new SampleView(webView.getContext());
webView.post(new Runnable(){
public void run(){
webView.addView(hands, new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT
));
}
});
}
}).start();
return new PluginResult(Status.OK, webView.getId());
}
*线程/可运行的东西来自Android UI Thread Ref中的第二个示例(任何对webView的编辑都必须由UI线程运行)
**神奇的大门是知道Plugin类中的webView变量,它引用了Phonegap webview。只有在进入课堂后我才发现这一点。
*** SampleView是一个包含rotationAnimation的视图。以下是供参考的代码:
public static class SampleView extends View {
private AnimateDrawable mDrawable;
public SampleView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
Drawable dr = context.getResources().getDrawable(R.drawable.handtrim);
dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());
Log.v("test", "test");
RotateAnimation an = new RotateAnimation(0f, 360f, 13f, 133f);
an.setDuration(2000);
an.setRepeatCount(-1);
an.setInterpolator(getContext(), android.R.anim.linear_interpolator);
an.initialize(10, 10, 10, 10);
mDrawable = new AnimateDrawable(dr, an);
an.startNow();
}
@Override protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
int w = canvas.getWidth();
int h = canvas.getHeight();
int cx = w / 2;
int cy = h / 2 - mDrawable.getIntrinsicHeight();
canvas.translate(cx, cy);
mDrawable.draw(canvas);
invalidate();
}
}