編輯:關於Android編程
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Log.i(tag, 屏幕尺寸1: 寬度 = +display.getWidth()+高度 = :+display.getHeight() );
DisplayMetrics dm =getResources().getDisplayMetrics(); int w_screen = dm.widthPixels; int h_screen = dm.heightPixels; Log.i(tag, 屏幕尺寸2:寬度 = + w_screen + 高度 = + h_screen + 密度 = + dm.densityDpi);
Line 1297: 12-08 11:39:09.037 I/yan (13602): 屏幕尺寸1: 寬度 = 720高度 = :1280 Line 1299: 12-08 11:39:09.037 I/yan (13602): 屏幕尺寸2:寬度 = 720高度 = 1280密度 = 320
Line 1511: 01-06 03:11:20.839 I/yan (30175): 屏幕尺寸1: 寬度 = 1080高度 = :1920 Line 1513: 01-06 03:11:20.839 I/yan (30175): 屏幕尺寸2:寬度 = 1080高度 = 1920密度 = 480
package org.yanzi.util; import android.content.Context; public class DisplayUtil { public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5f); } }轉換時牽涉到一個密度的概念,密度越大,單位物理尺寸上的像素點就越多,dip也就越大。從轉換公式上也可以看到,px近似等於dip*density。dip跟dp一個意思,在android開發中推薦像素使用dip概念。舉個簡單的例子,如果掃描矩形框的長度為300px,在density為320和480的手機屏幕上顯示效果是完全不一樣的,因此單位要使用dip。但是在使用canvas繪制東西時,所依照的坐標系、Rect等單位都是px,所以其尺寸要以dip為單位,而坐標要以px為單位。假設要以屏幕的中心為正方形的中心,畫一個邊長為D的正方形,設D = 240dip. 代碼如下:
Point center_dip = new Point(DisplayUtil.px2dip(this, dm.widthPixels)/2, DisplayUtil.px2dip(this, dm.heightPixels)/2); //以dip為單位的中心 square_screen = new Rect(DisplayUtil.dip2px(this, center_dip.x - D/2), DisplayUtil.dip2px(this,center_dip.y - D/2), DisplayUtil.dip2px(this,center_dip.x + D/2), DisplayUtil.dip2px(this,center_dip.y + D/2));首先得到dip為單位的屏幕中心,然後以D(單位dip)得到單位為dip的正常性坐標,再將其轉換成單位為px的坐標,這樣在不同的手機上顯示效果就是一樣的。其實可以這麼看待dip,dip有點類似手機的物理尺寸,盡管實際上不是。dip = px/density,geek 5.0寸屏跟G700,得到的結果是一樣的:1080/3 = 720/2
listview實現上拉加載以及下拉刷新的方式有很多。下面是我寫的一種自定義的布局,復用性也比較的強。首先就是繼承的listview的自定義view。 &nbs
行業背景: 今天,涉及通信產業鏈中的每個環節,都有Android的身影,Android是第一款完全
對於前端開發,Fiddler應該是比較常用的網絡請求監聽工具了,之前為了跨平台還想使用wireshark,但是發現相比起來不太友好,折騰過後才發現原來Fiddler也有l
Android中的ListView是一個經常用到的控件,ListView裡面的每個子項Item可以使一個字符串,也可以是一個組合控件。本文先來說說ListView的實現: