Можно ли разместить анимацию Android поверх веб-вида phonegap? - PullRequest
2 голосов
/ 30 сентября 2011

Я новичок в phonegap / java.Поскольку анимация CSS / Javascript в Android медленная, я пытаюсь создать плагин Phonegap, который будет размещать нативную анимацию Android в верхней части веб-просмотра, который использует Phonegap.

Пример: фон часов в активеHTML и плагин 'handRotation', который поместит собственную анимацию вращающихся рук на андроид поверх веб-вида.

Если это не ясно, дайте мне знать.Я буду продолжать пытаться выяснить, возможно ли это, и опубликую свои выводы здесь, но любая помощь приветствуется!

*** ОБНОВЛЕНИЕ

Я понял это.

Итак, учитывая, что вы прошли через учебник по плагину Phonegap и вы сидите в своем классе, который расширяет плагин, вот что я сделал:

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 Ref (любые изменения в webView должны выполняться потоком пользовательского интерфейса)

** Волшебная дверь знала о переменной webView в плагинекласс, который ссылается на веб-представление Phonegap.Я узнал об этом только после пика в класс.

*** SampleView - это представление, содержащее анимацию вращения.Вот код для справки:

    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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...