一、效果
如上圖,手指頭放在mexpenditemview,當手指頭移動的時候,mtouchimageview隨著mexpenditemview的移動而縮放和旋轉
二、關鍵原始碼
private void initattribute()
private void touchexpandview(view v, motionevent event)
} private float getdistancex(motionevent event)
private float getdistancey(motionevent event)
private void setscaleandrotate(motionevent event)
入口是touchexpandview, 需要監聽ontouchlistener,然後在ontouch執行touchexpandview。
三、原理
1、小圖示mexpenditemview的移動
簡單的數學知識:
mcorrectionx = event.getrawx() - v.getx();
這個mcorrectionx就是touch點和mtouchimageview左上角的x座標的距離。這個值在移動的過程中是不變的。
所以,移動的時候,v的x座標就是:
v.getx() = event.getrawx() - mcorrectionx.
就是上面**中的函式getdistancex
2、mtouchimageview的縮放和旋轉
很重要的一點,縮放和旋轉都是相對於原始大小和角度的。座標是相對於mtouchimageview的中心點。
所以,先記錄原始大小和角度:initattribute()
縮放的倍數,就是縮放後的半徑除以原始大小的半徑。半徑的演算法就是勾股定理。
旋轉的角度,就是上圖的a2 - a1.
a2和a1的演算法就是tan a = y / x.
ViewPager隨著手指聯動,且字型隨之變色
在此次專案中,總結了一下在viewpager fragment的情況下,手指滑動viewpager,使得指標一起聯動,並且字型隨之變色的效果,參考了鴻洋大神的兩篇文章和其他開源 此次做了比較完整的處理,以後如果有需要的話,可以直接拿來用。具體的一些 塊貼上來僅供參考 自定義的scrolltabvie...
android 自己定義元件隨著手指自己主動畫圓
首先自己定義乙個view子類 package com.example.androidtest0.myview import android.content.context import android.graphics.canvas import android.graphics.color imp...
android自定義view之畫圓隨著手指移動
以前在部落格總想找到乙個簡單適合初步接觸自定義 但是總是被那些部落格大佬們玄幻的 帶懵,可能層次不夠,所以我慢慢深入,下面的 是圓隨著手指滑動而滑動 public class drawview extends view public drawview context context,nullable...