我擁有絕對佈局元素中的人臉圖像(250px X 250px)。我目前獲得用戶的觸摸座標,並使用一些數學計算已觸摸的內容(例如鼻子),然後做相應的事情。Android - 要降低的像素
我的問題是如何縮放這個以適應可用的屏幕寬度。如果我將圖像(在xml中)設置爲fill_parent,則座標是出來的。這可以通過將觸摸座標轉換爲傾角來補救(如果是這樣,如何),或者我需要獲得屏幕寬度(再次轉換爲傾角)並使用更多數學來理清座標問題?
任何和所有的幫助表示讚賞。
我擁有絕對佈局元素中的人臉圖像(250px X 250px)。我目前獲得用戶的觸摸座標,並使用一些數學計算已觸摸的內容(例如鼻子),然後做相應的事情。Android - 要降低的像素
我的問題是如何縮放這個以適應可用的屏幕寬度。如果我將圖像(在xml中)設置爲fill_parent,則座標是出來的。這可以通過將觸摸座標轉換爲傾角來補救(如果是這樣,如何),或者我需要獲得屏幕寬度(再次轉換爲傾角)並使用更多數學來理清座標問題?
任何和所有的幫助表示讚賞。
pixels = dps * (density/160)
的(density/160)
因子是被稱爲密度比例因子,並獲得被在Java中從顯示量度對象中檢索。你應該做的是根據dips
(與密度爲160的屏幕上的像素相同)存儲鼻子的位置等等,然後根據正在運行的屏幕將dips
轉換爲像素:
final static int NOSE_POSITION_DP = 10;
final float scale = getContext().getResources().getDisplayMetrics().density;
final int nosePositionPixels = (int) (NOSE_POSITION_DP * scale + 0.5f);
public int getDip(int pixel)
{
float scale = getBaseContext().getResources().getDisplayMetrics().density;
return (int) (pixel * scale + 0.5f);
}
我在圖書館三個有用的功能...
獲取屏幕像素密度
public static float getDensity(Context context){
float scale = context.getResources().getDisplayMetrics().density;
return scale;
}
轉換探底像素。
public static int convertDiptoPix(int dip){
float scale = getDensity();
return (int) (dip * scale + 0.5f);
}
將像素轉換爲驟降。
public static int convertPixtoDip(int pixel){
float scale = getDensity();
return (int)((pixel - 0.5f)/scale);
}
如何在靜態函數聲明中使用getApplicationContext()? – 2014-04-28 23:37:11
這樣做的一個非常簡單的方法。
int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 250, (mContext).getResources().getDisplayMetrics());
非常感謝這,這將是非常有益的。 – Rooneyl 2011-04-08 07:41:07
額外的問題:如果鼻子在125,125(基於250px圖像),如果我將圖像設置爲fill_parent並且縮放到屏幕寬度(比如說480px),我將如何設置鼻子位置,例如,125,125現在是左眼了嗎? – Rooneyl 2011-04-08 07:44:34
嘗試使用傾角代替xml,將高度和寬度設置爲250dip的圖像。 – Abhi 2011-04-08 07:46:31