標籤:android style blog io ar color sp div on
老早就想找關於不同點擊不同地方的對焦,但是一直沒有找到,現在項目又需要這個功能,又跑出來找找,最後還是找到啦~~關於對焦更多的是關於自動對焦。
廢話不多說,直接來乾貨,主要是setFocusAreas方式實現的。
每個對角地區是一個具有特定權值的長方形。方向與重力感應的方向有關。這個方向不會受到 setDisplayOrientation(int)設定的影響。矩形的座標範圍從-1000到1000 ,(-1000,-1000)是左上方點(1000,1000)是右下角點。對焦地區的長或寬不能為0或負數,而權值的取值範圍是1-1000,權值為矩形範圍像素所平分,這意味著同樣的權值對焦地區大的對整體的對焦影響小。
Code
private Rect calculateTapArea(float x, float y, float coefficient) { float focusAreaSize = 300; int areaSize = Float.valueOf(focusAreaSize * coefficient).intValue(); int centerX = (int) (x / getResolution().width - 1000); int centerY = (int) (y / getResolution().height - 1000); int left = clamp(centerX - areaSize / 2, -1000, 1000); int top = clamp(centerY - areaSize / 2, -1000, 1000); RectF rectF = new RectF(left, top, left + areaSize, top + areaSize); return new Rect(Math.round(rectF.left), Math.round(rectF.top), Math.round(rectF.right), Math.round(rectF.bottom)); } private int clamp(int x, int min, int max) { if (x > max) { return max; } if (x < min) { return min; } return x; } public Camera.Size getResolution() { Camera.Parameters params = myCamera.getParameters(); Camera.Size s = params.getPreviewSize(); return s; }
在OnTouch事件裡面調用此方法。
我是天王蓋地虎的分割線
Android -- 觸摸Area對焦地區