2015-12-22 7 views
13

Witam Chcę utworzyć dynamiczny model twarzy użytkownika w Androidzie i wyświetlić użytkownikowi.Jak stworzyć dynamiczny model twarzy użytkownika w systemie Android?

Szukałem i stwierdziłem, że potrzebuję użytkownika różnych kątów ramek (obrazów) takich jak 14 do 16 obrazów i do wyświetlania celów należy zmienić obrazy (ramka) za pomocą OpenGL (dla płynności) na przesunięcie palcem użytkownika, aby wyglądało jak Obraz 3D.
Ale chcę jak jakiś edycji podobnego (nosić kłoszenia) w każdej ramce i wyświetlaczem dla użytkownika jak jak https://lh3.googleusercontent.com/WLu3hm0nIhW5Ps9GeMS9PZiuc3n2B8xySKs1LfNTU1drOIqJ-iEvdiz-7Ww0ZX3ZtLk=h900

Proszę dać mi jakieś sugestie lub przykładem na to.

+0

Nie rozumiem Twoje pytanie ... brzmi jak chcesz utwórz aplikację, która pozwala użytkownikowi zrobić kilka zdjęć, a następnie wyświetlić je wszystkie w animacji, z opcją dodania czegoś do obrazów jak kolczyk ... jak chcesz em, aby móc dodawać rzeczy? Czy muszą również dostarczyć od 14 do 16 zdjęć kolczyka, czy też wstępnie je załadujesz? Jakiego rodzaju przykładów szukasz? Chcesz przykład aplikacji, która już robi to, co opisujesz? – pabrams

+0

Jeśli widzisz obraz, który udostępniłem linkowi w moim pytaniu, to zauważysz, że obraz jednej dziewczyny, w którym nosi uszy (Earing jest obiektem dynamicznym) i twarz poruszają się o 180 stopni, tak że widzę oba ozdoby nauszne jak w modelu 3D. " – Hits

Odpowiedz

0

Oczekuję, że twoje zdjęcia zmieszczą się w pamięci.
Możesz dodać ImageView dla każdego obrazu do FrameLayout i pozwolić, aby tylko jeden ImageView był widoczny. Następnie można nawet użyć animacji pojawiania się/zanikania, aby poprawić efekt po przejściu do następnego obrazu.

ImageView[] imageViews; 
int currentView = 0; 

... 

// fill imageViews 

... 

ImageView image1 = imageViews[currentView]; 

if (moveRight) { 
    if (++currentView >= imageViews.length) currentView = 0; 
} else { 
    if (--currentView < 0) currentView = imageViews.length - 1; 
} 

ImageView image2 = imageViews[currentView]; 

image1.setVisibility(View.INVISIBLE); 
image1.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_out)); 
image2.setVisibility(View.VISIBLE); 
image2.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in)); 

anim/fade_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <alpha 
     android:duration="150" 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0"/> 
</set> 

anim/fade_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <alpha 
     android:duration="150" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0"/> 
</set> 

O akceleracji sprzętowej, myślę, że w tym przypadku Android może obsłużyć to dla ciebie . z Android 3.0 można zdefiniować go w manifeście do stosowania lub działalności:

android:hardwareAccelerated="true" 

Alternatywnie można ustawić tylko dla określonych poglądów.

Korzystanie XML:

android:layerType="hardware" 

Korzystanie Java:

view.setLayerType(View.LAYER_TYPE_HARDWARE, null); 

Tutaj można znaleźć więcej informacji o Hardware Acceleration

+0

Jeśli twoje zdjęcia nie mieszczą się w pamięci, będziesz musiał załadować je w tle podczas zmiany kąta, co prawdopodobnie spowoduje pewne opóźnienia. Więc może lepiej będzie pominąć niektóre obrazy lub zastosować inne podejście (niższa jakość RGB565, mniejsza rozdzielczość). –

Powiązane problemy