package org.gulup.utils;
import java.lang.reflect.Field;
import android.app.Activity;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class ScreenUtil {
private static int screenWidth;
private static int screenHeight;
public final int MARGIN_TOP = 1;
public final int MARGIN_BOTTON = 2;
public final int MARGIN_LEFT = 3;
public final int MARGIN_RIGHT = 4;
/**
* 根據Activity設置屏幕大小
*
* @param activity
*/
public static void initScreen(Activity activity, float verticalWidth,
float verticalHeight) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels;
Constant.DEF_WIDTH = verticalWidth;
Constant.DEF_HEIGHT = verticalHeight;
//Constant.LANDSCAPE_WIDTH = landscapeWidth;
//Constant.LANDSCAPE_HEIGHT = landscapeHeight;
}
/**
* 根據Fragment設置屏幕大小
*
* @param fragment
*/
public static void setWidthAndHightByFragment(Fragment fragment) {
DisplayMetrics dm = new DisplayMetrics();
fragment.getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(dm);
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels;
}
/**
* 根據Activity設置屏幕大小
*
* @param activity
*/
public static void setWidthAndHighByActivity(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels;
}
/**
* 设置控件寬高
*
* @param view
* @param widthScale
* @param highScale
*/
public static void setViewSize(View view, float widthScale, float highScale) {
float width = 0;
float height = 0;
if(GlobalUtil.getDirection().equals(Constant.PORTRAIT)){
width = widthScale / Constant.DEF_WIDTH;
height = highScale / Constant.DEF_HEIGHT;
}else if(GlobalUtil.getDirection().equals(Constant.LANDSCAPE)){
width = widthScale / Constant.DEF_HEIGHT;
height = highScale / Constant.DEF_WIDTH;
}
LayoutParams params = view.getLayoutParams();
params.height = (int) (height * screenHeight);
params.width = (int) (width * screenWidth);
view.setLayoutParams(params);
}
/**
* 设置控件的宽(不設置高)
*
* @param view
* @param widthScale
*/
public static void setViewWidth(View view, float widthScale) {
float width = 0;
if(GlobalUtil.getDirection().equals(Constant.PORTRAIT)){
width = widthScale / Constant.DEF_WIDTH;
}else if(GlobalUtil.getDirection().equals(Constant.LANDSCAPE)){
width = widthScale / Constant.DEF_HEIGHT;
}
LayoutParams params = view.getLayoutParams();
params.width = (int) (width * screenWidth);
view.setLayoutParams(params);
}
/**
* 设置控件的高度(不設寬)
*
* @param view
* @param highScale
*/
public static void setViewHeight(View view, float highScale) {
float height = 0;
if(GlobalUtil.getDirection().equals(Constant.PORTRAIT)){
height = highScale / Constant.DEF_HEIGHT;
}else if(GlobalUtil.getDirection().equals(Constant.LANDSCAPE)){
height = highScale / Constant.DEF_WIDTH;
}
LayoutParams params = view.getLayoutParams();
params.height = (int) (height * screenHeight);
view.setLayoutParams(params);
}
/**
* 設置控件的邊距
*
* @param view
* @param top
* @param bottom
* @param left
* @param right
*/
public static void setViewMargin(View view, float top, float bottom,
float left, float right) {
if (view.getLayoutParams() instanceof LinearLayout.LayoutParams) {
Field fWeight = null;
float f = 0;
try {
fWeight = view.getLayoutParams().getClass().getField("weight");
f = (Float) fWeight.get(view.getLayoutParams());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) view.getLayoutParams();
if(top>0)
params.topMargin = (int) ((top / Constant.DEF_HEIGHT) * screenHeight);
if(bottom>0)
params.bottomMargin = (int) ((bottom / Constant.DEF_HEIGHT) * screenHeight);
if(left>0)
params.leftMargin = (int) ((left / Constant.DEF_WIDTH) * screenWidth);
if(right>0)
params.rightMargin = (int) ((right / Constant.DEF_WIDTH) * screenWidth);
params.weight = f;
view.setLayoutParams(params);
} else {
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) view.getLayoutParams();
if(top>0)
params.topMargin = (int) ((top / Constant.DEF_HEIGHT) * screenHeight);
if(bottom>0)
params.bottomMargin = (int) ((bottom / Constant.DEF_HEIGHT) * screenHeight);
if(left>0)
params.leftMargin = (int) ((left / Constant.DEF_WIDTH) * screenWidth);
if(right>0)
params.rightMargin = (int) ((right / Constant.DEF_WIDTH) * screenWidth);
view.setLayoutParams(params);
}
}
/**
* 设置控件居中方法
*
* @param view
* @param parameter
*/
public static void setCenter(View view, int parameter) {
if (view.getLayoutParams() instanceof RelativeLayout.LayoutParams) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
view.getLayoutParams());
params.addRule(parameter);
view.setLayoutParams(params);
}
}
public static int getScreenWidth() {
return screenWidth;
}
public static int getScreenHeight() {
return screenHeight;
}
public static int getScreenWidth(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
return width;
}
public static int getScreenHeight(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
int height = wm.getDefaultDisplay().getHeight();
return height;
}
}