Я новичок в 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();
}
}