是否可以将android动画放在phonegap Web视图的顶部?

时间:2011-09-30 18:24:02

标签: java android cordova

我是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();
    }
}

0 个答案:

没有答案