標籤:cti led gis bsp default pause idt ide lifecycle
AutoScreenAdaptation
安卓螢幕適配 項目直接用dp和sp的可以不用改動 直接加入一句代碼即可實現適配
還未確定會不會有相容性問題和效能問題 需要時間測試
目前測試過模擬器的不同解析度和不同dpi基本效果不會差太多
旋轉螢幕 布局會按橫版的大小縮放 視圖也不會亂
支援x y適配
720x1280
480x800
主要代碼
public classScreenAdaptation {
privateApplication.ActivityLifecycleCallbacksactivityLifecycleCallbacks;
privateApplicationmApplication;
private floatmWidth=720;
private floatmHeight=1280;
publicScreenAdaptation(Application application,floatwidth,intheight) {
mApplication= application;
mWidth= width;
mHeight= height;
activityLifecycleCallbacks=newApplication.ActivityLifecycleCallbacks() {
@Override
public voidonActivityCreated(Activity activity, Bundle savedInstanceState) {
//開啟Activity才執行
resetDensity(activity,mWidth,mHeight);
}
@Override
public voidonActivityStarted(Activity activity) {
}
@Override
public voidonActivityResumed(Activity activity) {
}
@Override
public voidonActivityPaused(Activity activity) {
}
@Override
public voidonActivityStopped(Activity activity) {
}
@Override
public voidonActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public voidonActivityDestroyed(Activity activity) {
}
};
}
/**
*註冊
*/
public voidregister(){
resetDensity(mApplication,mWidth,mHeight);
mApplication.registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
}
/**
*登出
*/
public voidunregister(){
//設定為預設
mApplication.getResources().getDisplayMetrics().setToDefaults();
mApplication.unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);
}
/**
* dp適配getResources().getDisplayMetrics().density
* sp適配getResources().getDisplayMetrics().scaledDensity
* pt適配getResources().getDisplayMetrics().xdpi
*@paramcontext
*@paramwidthui設計圖的寬度
*@paramheightui設計圖的高度
*/
private static voidresetDensity(Context context,floatwidth ,floatheight){
Point point =newPoint();
//擷取螢幕的數值
((WindowManager)context.getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getSize(point);
//dp適配getResources().getDisplayMetrics().density
context.getResources().getDisplayMetrics().density= point.x/width*2f;
context.getResources().getDisplayMetrics().density= point.y/height*2f;
//sp適配getResources().getDisplayMetrics().scaledDensity
context.getResources().getDisplayMetrics().scaledDensity= point.x/width*2f;
context.getResources().getDisplayMetrics().scaledDensity= point.y/height*2f;
}
}
使用:
public classAppextendsApplication{
@Override
public voidonCreate() {
super.onCreate();
//需要傳入ui設計給的大小,初始化
newScreenAdaptation(this,720,1280).register();
}
}
溫開創
連結:http://www.jianshu.com/p/97b107308923
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
Android最簡單螢幕適配,項目用dp,sp的只需加一行代碼