import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.IBinder;
import android.os.Looper;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView; import java.io.InputStream; /**
* UI工具类
* @version 1.0
*/
public class UiUtilities {
/**
* 设置view的显示状态
*/
public static void setVisibilitySafe(View view, int visibility) {
if (view != null && view.getVisibility() != visibility) {
view.setVisibility(visibility);
}
} /**
* 设置view的显示状态
*/
public static void setVisibilitySafe(View parent, int id, int visibility) {
if (parent != null) {
setVisibilitySafe(parent.findViewById(id), visibility);
}
} public static void setPressedSafe(View view, boolean pressed) {
if (view != null && view.isPressed() != pressed) {
view.setPressed(pressed);
}
} public static void setEnabledSafe(View parent, int id, boolean enabled) {
if (parent != null) {
View view = parent.findViewById(id);
if (view != null) {
view.setEnabled(enabled);
}
}
} public static void setOnClickListenerSafe(View parent, int id, OnClickListener l) {
if (parent != null) {
View view = parent.findViewById(id);
if (view != null) {
view.setOnClickListener(l);
}
}
} public static void requestFocus(View view) {
if (view != null) {
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();
}
} public static boolean isEditTextEmpty(EditText edit) {
return edit.getText() == null || edit.getText().toString().trim().length() <= 0;
} public static boolean hideInputMethod(Activity activity) {
return hideInputMethod(activity, activity.getWindow().getDecorView().getWindowToken());
} public static boolean hideInputMethod(Dialog dialog) {
return hideInputMethod(dialog.getContext(), dialog.getWindow().getDecorView().getWindowToken());
} public static boolean hideInputMethod(Context context, IBinder iBinder) {
InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
return im.hideSoftInputFromWindow(iBinder, 0);
} public static void checkBackgroudThread() {
if (Looper.getMainLooper() == Looper.myLooper()) {
throw new IllegalStateException("It must run in backgroud thread.");
}
} public static void cancelAsyncTask(AsyncTask<?, ?, ?> task) {
if (task != null) {
task.cancel(true);
}
} public static void clearBitmapInImageView(ImageView v) {
if (v != null) {
clearBitmapInDrawable(v.getDrawable());
}
} public static void clearBackgroundBitmapInView(View v) {
if (v != null) {
clearBitmapInDrawable(v.getBackground());
}
} public static void clearBitmapInDrawable(Drawable d) {
if (d != null && d instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
if (bitmap != null) {
Logger.v("luochun", bitmap.toString());
bitmap.recycle();
}
}
} public static Bitmap decodeResourceBitmap(Context context, int resId) {
InputStream is = context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is);
}
}

UiUtils的更多相关文章

  1. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  2. BaseAdapter的抽取

    为了更方便高效的使用BaseAdapter,特意抽取了一下,下面是简单的结构图: 需要4个类: [MyBaseAdapter3]: public abstract class MyBaseAdapte ...

  3. 使用TabPageIndicator的样式问题

    在使用TabPageIndicator往往会出现一些样式问题,导致看不到字,下面是总结的步骤: 1.布局<LinearLayout xmlns:android="http://sche ...

  4. ExpandableListView实现展开更多和收起更多

    [需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...

  5. ueditor调用其中的附件上传功能

    ueditor实际上是集成了webuploader, 在做内容发布的时候想既有ueditor又有单独的附件上传按钮,这时再加载一个webuploader就显得过于臃肿了,单独利用ueditor的上传功 ...

  6. selenium元素操作

    1.文本框(text field or textarea) element.sendKeys("test");//在输入框中输入内容: element.clear(); //将输入 ...

  7. Selenium 元素定位

    selenium通过driver.findElement(By selector)来定位元素,selector在selenium-java.jar中,里面的方法一共就8种,如下图: 基本定义: By. ...

  8. 6个强大的AngularJS扩展应用

    本文链接:http://www.codeceo.com/article/6-angularjs-extension.html本文作者:码农网 – 小峰 AngularJS现在非常热门,是Google推 ...

  9. angularjs组件之input mask

    今天将奉献一个在在几个angularjs项目中抽离的angular组件 input mask.在我们开发中经常会对用户的输入进行控制,比如日期,货币格式,或者纯数字格式之类的限制,这就是input m ...

随机推荐

  1. 修正Calendar的Bug

    procedure TAndroidNativeCalendarListener.onSelectedDayChange(view: JCalendarView; year, month, dayOf ...

  2. html图片自定义裁剪大小

    该插件后端使用ASP.NET MVC实现图片存储 该插件适用于需要固定显示缩略图片的文章列表! 演示地址:http://hhcf.top:8099/Cropper/Index 源码下载:https:/ ...

  3. 异步处理的框架Sanic的使用方法和小技巧

    Sanic是异步处理的框架,运用Sanic可以开发快速异步响应的web程序.想必大家看到这个都会比较期待和兴奋. 那么如何使用Sanic来实现快速响应呢?我们先来看一看Sanic的基本介绍. Sani ...

  4. web开发:javascript高级

    一.事件案例 二.循环绑定之变量污染 三.事件的绑定与取消 四.事件对象 一.事件案例 <!DOCTYPE html> <html> <head> <meta ...

  5. LoadRunner(3)

    一.性能测试的策略 重要的:基准测试.并发测试.在线综合场景测试 递增测试.极限测试... 1.基准测试:Benchmark Testing 含义:就是单用户测试,单用户.单测试点.执行n次: 作为后 ...

  6. Launcher类源码分析

    基于上一次获取系统类加载器这块进行分析: 关于这个方法的javadoc在之前已经阅读过了,不过这里再来仔细阅读一下加深印象: 这里有一个非常重要的概念:上下文类加载器: 它的作用非常之大,在后面会详细 ...

  7. OI界的事

    随时更新: 目前在中大型考试上已经因为freopen相关的锅导致此题爆零共有: 5次.并且因此参加不了提高组(菜到无人反驳) 本人:学oi半年的练习生)蒟蒻 ,擅长水红题,橙题,博客,以及电子方面. ...

  8. PC客户端自动化测试工具--pywinauto

    1.安装 pywinauto pip install pywinauto 2.打开PC的.exe可执行文件的,一种方式就够用了 from pywinauto import application ap ...

  9. Kubernetes1.16下部署Prometheus+node-exporter+Grafana+AlertManager 监控系统

    Prometheus 持久化安装 我们prometheus采用nfs挂载方式来存储数据,同时使用configMap管理配置文件.并且我们将所有的prometheus存储在kube-system #建议 ...

  10. neo4j 一些常用的CQL

    创建节点.关系 创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n; 创建节点(小红): create (n:people{ ...