2013-03-16 13 views

Odpowiedz

7

Prostym sposobem byłoby wykorzystanie płótna rysuje narysować 4-stronny kształty.

Rozważ wszystkie 4 narożniki. Prostokąt "nietknięty" byłby pełnowymiarowy, a dotknięty prostokąt byłby mniejszy.

Touched and untouched boxes

Trzeba tylko zwrócić czterostronne kształt za pomocą punktu można obliczyć dla każdej części prostokąta. Możesz uzyskać pozycję dotykową, a następnie dowiedzieć się, ile "wagi" daje każdy punkt.

do obliczenia każdego rogu, musisz dowiedzieć się, ile "waga" daje dotknięta współrzędna i ile "waga" daje nienaruszona współrzędna. Jeśli dotkniesz lewego górnego rogu, ten róg będzie używał 100% dotkniętej współrzędnej, a pozostałe trzy rogi będą wykorzystywać nienaruszoną współrzędną.

touched top left corner

Jeśli dotknął górnym środkowym, co można uzyskać kształt takiego:

touched top middle

Możemy obliczyć rogach do jakiegokolwiek dotyku miejscu, obliczając jak daleko od rogu Twój dotyk jest

touched bottom left

float untouchedXWeight1 = Math.abs(xt - x1)/width; 
    //maximum of 1, minimum of 0 

    float untouchedYWeight1 = Math.abs(yt - y1)/height; 

    float untouchedWeight1 = (untouchedXWeight1 + untouchedYWeight1)/2; 
    //also maximum of 1, minimum of 0 

    float touchedWeight1 = 1 - untouchedWeight1; 

tak z tymi ciężarami, można obliczyć pozycje X i Y na tym rogu:

x1 = xUntouched1 * untouchedWeight + xTouched1 * touchedWeight1; 
y1 = yUntouched1 * untouchedWeight + yTouched1 * touchedWeight1; 

Następnie zrobić podobnie dla pozostałych 3 narożników.

+0

Nie mogłem zastosować tego do ViewGroup. Czy masz jakieś pomysły na ten temat? – frankish

+0

Czy próbowałeś już korzystać z GLSurfaceView? – HalR

+0

w tym pytaniu: http://stackoverflow.com/questions/7734228/android-accessing-buttons-from-surfaceview Jedna z odpowiedzi przedstawia podstawy: – HalR

Powiązane problemy