在我的應用程序中,我創建一個畫布並在其上添加一些位圖。問題在於對象添加了觸摸屏幕的原因。所以在一個屏幕上它們出現在不同的中間,但它們在像素中的位置是不同的。Android - 在不同設備上繪圖
我是說我有平板電腦和智能手機。當我碰到一個物體時,物體會出現在兩個設備(多人)上,但它不在同一個地方,因爲它通過x和y傳遞位置。
如果有人明白我的意思,你能幫助我嗎? 可能它必須有一些常見的計數比例。
在我的應用程序中,我創建一個畫布並在其上添加一些位圖。問題在於對象添加了觸摸屏幕的原因。所以在一個屏幕上它們出現在不同的中間,但它們在像素中的位置是不同的。Android - 在不同設備上繪圖
我是說我有平板電腦和智能手機。當我碰到一個物體時,物體會出現在兩個設備(多人)上,但它不在同一個地方,因爲它通過x和y傳遞位置。
如果有人明白我的意思,你能幫助我嗎? 可能它必須有一些常見的計數比例。
我猜你遇到的問題是屏幕是不同的分辨率,你傳遞的像素數據。您需要使用dp值,並在發送它們之前將dp轉換爲像素值。在接收設備上,您需要將給定設備上發回的像素值轉換回dp。使用下面的方法進行轉換。
轉換DP至像素:
final float scale = getResources().getDisplayMetrics().density;
int pixelValue = (int) (DESIRED_DP_VALUE * scale + 0.5f);
轉換像素DP:
final float scale = getResources().getDisplayMetrics().density;
int dpValue = (int) ((DESIRED_PIXEL_VALUE) - 0.5f/scale);
到getDisplayMetrics()的調用密度是什麼會給你基於當前比例值。設備。 dp值意味着與密度無關。
如何定義度量標準?如果您使用的像素,使用密度獨立的解決方案:
public int GetDipsFromPixel(float pixels)
{
// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
return (int) (pixels * scale + 0.5f);
}
而且在你課堂上使用這樣的:
textView.setHeight(GetDipsFromPixel(50));
這種方式的TextView的高度將是兩個相同的dps設備,即使它們的分辨率不同。
我不知道這是否正常工作,在這兩個設備上我得到的規模1.0,所以他們之間沒有什麼不同...... – goodm 2012-04-23 15:29:11
這可能是因爲兩個密度都差不多。 http://developer.android.com/reference/android/util/DisplayMetrics.html#density「這個值並不完全遵循真實的屏幕尺寸」。 – 2015-08-04 17:40:59