2014-12-31 6 views
0

для моей диссертации бакалавра Я создаю носимый, который определяет положение, на которое он был нанесен на тело. Он подключен к устройству Android через BLE и сообщает телефону, где он был размещен.Анимация частей изображения

Теперь я хочу показать «карту» тела и оживить мигающую точку (я звоню в индикаторе оттуда) или что-то на теле, где находится носимая. Это может быть несколько устройств в разных местах тела. Если на корпусе установлено новое устройство, оно должно мигать на телеграмме.

Я читал около AnimationDrawable, который является непрактичным, потому что мне пришлось бы создавать слишком много разных кадров. Tweened view animation звучал хорошо, но мне нужен доступ к каждому индикатору. Я также попытался создать анимацию с холстом, который на самом деле сработает, но мне пришлось бы многократно перерисовывать, чтобы получить хорошие анимации.

Обычно я разрабатываю веб-интерфейсы, поэтому я подумал, что, возможно, просто позиционируя индикаторы на фоновом изображении, а затем рассказывать каждому индикатору, должен ли он быть видимым или он должен мигать и т. Д., Был бы хорошим подходом. Поэтому я попытался реализовать это с помощью слоя-списка drawables, указав каждый идентификатор. Тогда я мог бы манипулировать каждым из них. Но я не мог заставить его работать.

Я мог бы также пойти с OpenGL, но это было бы слишком много накладных, я думаю.

Так что мой вопрос - это то, что было бы лучшим способом создать несколько отдельно управляемых вещей, помещенных абсолютно на фоновое изображение. Любые мысли по этому поводу?

Заранее благодарим за ответы.

ответ

0

Вы можете использовать SurfaceView (знаете, вы упомянули об этом), но затем нарисуйте фоновое растровое изображение тела на SurfaceView. Это даст вам тело.

http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap%28android.graphics.Bitmap,%20float,%20float,%20android.graphics.Paint%29

Тогда все, что вам нужно сделать, это делают точки.

Обратите внимание, что если это достаточно просто, вы можете уйти с переопределением onDraw ImageView вместо реализации SurfaceView с фоновым потоком.

Надеюсь, это поможет, звучит как забавный проект.

+0

Это не совсем ответ на мой вопрос. Но я думаю, это то, что я собираюсь делать. – bechtold

0

Я полагал, что это абсолютный макет, но он осуждался в уровне API 3.

Так что сейчас я иду с этим:

<ImageView 
     android:id="@+id/figure" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/man" 
     android:layout_centerHorizontal="true" 
     /> 
    <ImageView 
     android:id="@+id/beSeen_arm_left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="80dp" 
     android:layout_marginTop="120dp" 
     android:clickable="true" /> 
    <ImageView 
     android:id="@+id/beSeen_arm_right" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="230dp" 
     android:layout_marginTop="120dp" 
     /> 
    <ImageView 
     android:id="@+id/beSeen_forearm_left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="70dp" 
     android:layout_marginTop="190dp" 
     /> 
    <ImageView 
     android:id="@+id/beSeen_forearm_right" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="240dp" 
     android:layout_marginTop="200dp" 
     /> 
    <ImageView 
     android:id="@+id/beSeen_back_top" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="160dp" 
     android:layout_marginTop="90dp" 
     /> 
    <ImageView 
     android:id="@+id/beSeen_head" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:layout_marginLeft="160dp" 
     android:layout_marginTop="10dp" 
     /> 

</RelativeLayout> 

Это не самый лучший, я предполагаю, что это имеет почти те же недостатки, что и у AbsoluteLayout.

Что-то вроде% вместо dp было бы хорошо для поля, я думаю.

Смежные вопросы