/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.codbking.widget.utils; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Paint; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.Locale; public class UIAdjuster { public static void closeKeyBoard(Context act) { if (act != null && act instanceof Activity) { closeKeyBoardInner((Activity) act); } } private static void closeKeyBoardInner(Activity act) { InputMethodManager imm = ((InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE)); if (act.getCurrentFocus() != null && act.getCurrentFocus().getWindowToken() != null) { imm.hideSoftInputFromWindow(act.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } public static int setListViewHeightBasedOnChildren(ListView listView) { int height = 0; ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return height; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)) + listView.getPaddingTop() + listView.getPaddingBottom(); height = params.height; listView.setLayoutParams(params); listView.requestLayout(); return height; } public static void addViewIfNotNull(ViewGroup group, View view) { if (view != null) { group.addView(view); } } /** * @param context * @param dip * @return px */ public static float computeDIPtoPixel(Context context, float dip) { Resources resources = context == null ? Resources.getSystem() : context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = metrics.density * dip; return px; } /** * @param dynamic * @param maxWidth * @return size */ public static float computeDynamicWidth(TextView dynamic, int maxWidth) { Rect rect = new Rect(); Paint paint = new Paint(); return computeDynamicWidth(dynamic, maxWidth, paint, rect); } /** * @param dynamic * @param maxWidth * @param paint * @param rect * @return size */ public static float computeDynamicWidth(TextView dynamic, int maxWidth, Paint paint, Rect rect) { String string = (String) dynamic.getText(); float size = dynamic.getTextSize(); while (true) { paint.setTextSize(size); paint.getTextBounds(string, 0, string.length(), rect); if (rect.width() > maxWidth) { size = size - 1; } else { break; } } return size; } /** * @param string * @param size * @return width of text */ public static int computeStringWidth(String string, float size) { Rect rect = new Rect(); Paint paint = new Paint(); paint.setTextSize(size); paint.getTextBounds(string, 0, string.length(), rect); return rect.width(); } /** * return Locale. if (TRADITIONAL_CHINESE) return true else false * * @param context * @return */ public static boolean getLanguage(Context context) { Configuration conf = context.getResources().getConfiguration(); if (conf.locale.equals(Locale.TAIWAN) || conf.locale.equals(Locale.TRADITIONAL_CHINESE)) { return true; } else { return false; } } // /** // * Show Progress Dialog // * // * @param context // * @param msg // * @param cancelable // * @return // */ // public static ProgressDialog showProgressDialog(Context context, String msg, boolean cancelable) { // // ProgressDialog p = new ProgressDialog(context); // p.setCancelable(cancelable); // p.setMessage(msg); // p.show(); // p.setContentView(R.layout.custom_progress_dialog); // p.setOnKeyListener(new DialogInterface.OnKeyListener() { // @Override // public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) { // return true; // Pretend we processed it // } // return false; // Any other keys are still processed as normal // } // }); // // return p; // } /** * * @param context * @return */ public static String getLocale(Context context) { Configuration conf = context.getResources().getConfiguration(); if (conf.locale.equals(Locale.TAIWAN) || conf.locale.equals(Locale.TRADITIONAL_CHINESE)) { return "zh_TW"; } else { return "en_US"; } } }