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.
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ą.
Jeśli dotknął górnym środkowym, co można uzyskać kształt takiego:
Możemy obliczyć rogach do jakiegokolwiek dotyku miejscu, obliczając jak daleko od rogu Twój dotyk jest
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.
Nie mogłem zastosować tego do ViewGroup. Czy masz jakieś pomysły na ten temat? – frankish
Czy próbowałeś już korzystać z GLSurfaceView? – HalR
w tym pytaniu: http://stackoverflow.com/questions/7734228/android-accessing-buttons-from-surfaceview Jedna z odpowiedzi przedstawia podstawy: – HalR