一、CustomDialog

(1)xml举例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android"><Viewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="3"></View><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="0dp"android:layout_gravity="center"android:layout_weight="2"android:background="#ffffff"android:orientation="vertical"><TextViewandroid:id="@+id/title"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="4"android:background="#ff7200"android:gravity="center"android:text="@string/tv_title"android:textColor="#ffffff"android:textSize="25sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_gravity="bottom"android:layout_weight="2"android:background="#ffffff"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_cancel"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/rectangle_shape"android:gravity="center"android:text="@string/tv_cancel"android:textColor="#b8b8b8"android:textSize="25sp" /><TextViewandroid:id="@+id/tv_confirm"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/rectangle_shape"android:gravity="center"android:text="@string/tv_submit"android:textColor="#ff9138"android:textSize="25sp" /></LinearLayout></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="2"></View>
</LinearLayout>

(2)utils

public class CustomDialog extends Dialog {public CustomDialog(Context context) {super(context);}public CustomDialog(Context context, int state) {super(context, state);}public static class Builder {private Context context;private View contentView;private int state;private   View layout = null;private DialogInterface.OnClickListener cancelButtonClickListener;private DialogInterface.OnClickListener confirmButtonClickListener;public Builder(Context context, int state) {this.context = context;this.state = state;}public Builder setContentView(View v) {this.contentView = v;return this;}public Builder setCancelButton(DialogInterface.OnClickListener listener) {this.cancelButtonClickListener = listener;return this;}public Builder setConfirmButton(DialogInterface.OnClickListener listener) {this.confirmButtonClickListener = listener;return this;}public CustomDialog create() {LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);// instantiate the dialog with the custom Themefinal CustomDialog dialog = new CustomDialog(context, R.style.Dialog);switch (state){case 0:layout = inflater.inflate(R.layout.layout_anser_dialog, null);break;case 1:layout = inflater.inflate(R.layout.layout_return_dialog1, null);break;case 2:layout = inflater.inflate(R.layout.layout_return_dialog2, null);break;case 3:layout = inflater.inflate(R.layout.layout_return_dialog3, null);break;case 4:layout = inflater.inflate(R.layout.layout_return_dialog4, null);break;default:break;}dialog.addContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));if (cancelButtonClickListener != null) {((TextView) layout.findViewById(R.id.tv_cancel)).setOnClickListener(new View.OnClickListener() {public void onClick(View v) {cancelButtonClickListener.onClick(dialog,DialogInterface.BUTTON_POSITIVE);}});}if (confirmButtonClickListener != null) {((TextView) layout.findViewById(R.id.tv_confirm)).setOnClickListener(new View.OnClickListener() {public void onClick(View v) {confirmButtonClickListener.onClick(dialog,DialogInterface.BUTTON_NEGATIVE);}});}dialog.setContentView(layout);return dialog;}}}

(3)引用

 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode==KeyEvent.KEYCODE_BACK){CustomDialog.Builder builder = new CustomDialog.Builder(BreakActivity.this,1);builder.setCancelButton( new android.content.DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.setConfirmButton(new android.content.DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {dialog.dismiss();finish();}});builder.create().show();return true;}return super.onKeyDown(keyCode, event);}

二、GetdataUtil本地文件读取

public class GetdataUtil  {private  static Context context;public GetdataUtil(Context context) {this.context = context;}public static List<String> GetrobotName(){List<String> stringList = new ArrayList<>();InputStream is = context.getClass().getClassLoader().getResourceAsStream("assets/"+"robotName");InputStreamReader streamReader = new InputStreamReader(is);BufferedReader reader = null;StringBuffer sbf = new StringBuffer();try {reader  = new BufferedReader(streamReader);String tempStr;while ((tempStr = reader.readLine()) != null) {stringList.add(tempStr);sbf.append(tempStr);}reader.close();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {e1.printStackTrace();}}}return stringList;}
}

三、RegisterPopWin


public class RegisterPopWin extends PopupWindow {private Context mContext;private View view;private EditText et_name, et_phone, et_pass;private Button bt_login,bt_test,bt_login2,bt_test2;private TextView tv_iknow;private ImageView imageView;public RegisterPopWin(Context mContext, View.OnClickListener itemsOnClick,int i) {this.view = LayoutInflater.from(mContext).inflate(R.layout.lay_forget, null);bt_login2 = view.findViewById(R.id.bt_login2);bt_test2 = view.findViewById(R.id.bt_test2);// 取消按钮
//        btn_cancel.setOnClickListener(new View.OnClickListener() {
//
//            public void onClick(View v) {
//                // 销毁弹出框
//                dismiss();
//            }
//        });// 设置按钮监听bt_test2.setOnClickListener(itemsOnClick);bt_login2.setOnClickListener(itemsOnClick);// 设置外部可点击this.setOutsideTouchable(true);// mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框this.view.setOnTouchListener(new View.OnTouchListener() {public boolean onTouch(View v, MotionEvent event) {int height = view.findViewById(R.id.pop_layout).getTop();int y = (int) event.getY();if (event.getAction() == MotionEvent.ACTION_UP) {if (y < height) {dismiss();}}return true;}});/* 设置弹出窗口特征 */// 设置视图this.setContentView(this.view);// 设置弹出窗体的宽和高this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT);this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);// 设置弹出窗体可点击this.setFocusable(true);// 实例化一个ColorDrawable颜色为半透明//  ColorDrawable dw = new ColorDrawable(0xb0000000);// 设置弹出窗体的背景// this.setBackgroundDrawable(dw);// 设置弹出窗体显示时的动画,从底部向上弹出this.setAnimationStyle(R.style.popwin_register);}}public View getView() {return view;}public void setView(View view) {this.view = view;}
}

四、StatusBarUtils

(1)utils

import android.annotation.TargetApi;import android.app.Activity;import android.graphics.Color;import android.os.Build;import android.view.View;import android.view.Window;import android.view.WindowManager;import java.lang.reflect.Field;import java.lang.reflect.Method;public class StatusBarUtils {/*** 修改状态栏为全透明** @param activity*/@TargetApi(19)public static void transparencyBar(Activity activity) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {Window window = activity.getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(Color.TRANSPARENT);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {Window window = activity.getWindow();window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);}}/*** 修改状态栏颜色,支持4.4以上版本** @param activity* @param colorId*/public static void setStatusBarColor(Activity activity, int colorId) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {Window window = activity.getWindow();
//      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(activity.getResources().getColor(colorId));}
//        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//            //使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明
//            transparencyBar(activity);
//            SystemBarTintManager tintManager = new SystemBarTintManager(activity);
//            tintManager.setStatusBarTintEnabled(true);
//            tintManager.setStatusBarTintResource(colorId);
//        }}/*** 状态栏亮色模式,设置状态栏黑色文字、图标,* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android** @param activity* @return 1:MIUUI 2:Flyme 3:android6.0*/public static int StatusBarLightMode(Activity activity) {int result = 0;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (MIUISetStatusBarLightMode(activity, true)) {result = 1;} else if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) {result = 2;} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);result = 3;}}return result;}/*** 已知系统类型时,设置状态栏黑色文字、图标。* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android** @param activity* @param type     1:MIUUI 2:Flyme 3:android6.0*/public static void StatusBarLightMode(Activity activity, int type) {if (type == 1) {MIUISetStatusBarLightMode(activity, true);} else if (type == 2) {FlymeSetStatusBarLightMode(activity.getWindow(), true);} else if (type == 3) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);}}/*** 状态栏暗色模式,清除MIUI、flyme或6.0以上版本状态栏黑色文字、图标*/public static void StatusBarDarkMode(Activity activity, int type) {if (type == 1) {MIUISetStatusBarLightMode(activity, false);} else if (type == 2) {FlymeSetStatusBarLightMode(activity.getWindow(), false);} else if (type == 3) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);}}/*** 设置状态栏图标为深色和魅族特定的文字风格* 可以用来判断是否为Flyme用户** @param window 需要设置的窗口* @param dark   是否把状态栏文字及图标颜色设置为深色* @return boolean 成功执行返回true*/public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {boolean result = false;if (window != null) {try {WindowManager.LayoutParams lp = window.getAttributes();Field darkFlag = WindowManager.LayoutParams.class.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");Field meizuFlags = WindowManager.LayoutParams.class.getDeclaredField("meizuFlags");darkFlag.setAccessible(true);meizuFlags.setAccessible(true);int bit = darkFlag.getInt(null);int value = meizuFlags.getInt(lp);if (dark) {value |= bit;} else {value &= ~bit;}meizuFlags.setInt(lp, value);window.setAttributes(lp);result = true;} catch (Exception e) {}}return result;}/*** 需要MIUIV6以上** @param activity* @param dark     是否把状态栏文字及图标颜色设置为深色* @return boolean 成功执行返回true*/public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) {boolean result = false;Window window = activity.getWindow();if (window != null) {Class clazz = window.getClass();try {int darkModeFlag = 0;Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");darkModeFlag = field.getInt(layoutParams);Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);if (dark) {extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体} else {extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体}result = true;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上if (dark) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);} else {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);}}} catch (Exception e) {}}return result;}
}

(2)引用

 /*** 说明:* 1. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖。* 2. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:设置状态栏图标为黑色或者白色* 3. StatusBarUtil 工具类是修改状态栏的颜色为白色。*/private void initStatusBar() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);StatusBarUtils.setStatusBarColor(MainActivity.this, R.color.colorRed);}}

CodeBase(五)工具类积累相关推荐

  1. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块...

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  2. 工具类五合一小程序源码星座配对+星座运势+恶搞放屁音效+引流工具+流量主

    今天给大家带来一套5合一小程序 星座配对+星座运势+恶搞放屁音效+引流工具+流量主 怎么弄?需要用到分包功能, 问:为什么是三套小程序,跟你演示的不一样啊? 答:为了防止有些人拿了东西就去闲鱼卖,只要 ...

  3. 精选五款工具类产品,黑五一次性低价拿下

    看着别人用mac一步步提高自己的学习或者工作效率,你是否在在买了mac设备之后却又不知道如何提升mac电脑的生产力而发愁?或者又是否在为不知如何从琳琅满目的app中挑选购买适合自己的软件而发愁?网上同 ...

  4. Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】

    第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator. 想要遍历Coll ...

  5. java(五)-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

    day05[迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类] 主要内容 Collection集合的遍历方式: 迭代器. foreach(增强for循环) JDK ...

  6. 客快物流大数据项目(五十六): 编写SparkSession对象工具类

    编写SparkSession对象工具类 后续业务开发过程中,每个子业务(kudu.es.clickhouse等等)都会创建SparkSession对象,以及初始化开发环境,因此将环境初始化操作封装成工 ...

  7. Java开发小技巧(五):HttpClient工具类

    前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...

  8. 项目常用工具类整理(五)--jar包整理

    2019独角兽企业重金招聘Python工程师标准>>> SSH框架: Struts1.2.9+Spring2.5+Hibernate3.2 说明:commons的几个包算是公用Jar ...

  9. (五)Java工具类ArrayUtils详解

    说明:ArrayUtils工具类在标准的应用程序中是不可以被实例化的:  参考:[参考地址](http://commons.apache.org/proper/commons-lang/javadoc ...

最新文章

  1. Ubuntu14.04 64位机上安装cuda8.0+cudnn5.0操作步骤
  2. linux expr命令
  3. Verdi-ug --- nwave Tutorial
  4. 通过python实现卷积神经网络_Python 徒手实现 卷积神经网络 CNN
  5. Zxing二维码重复扫描,不退出。
  6. Mybatis 插入数据后返回自增主键ID
  7. python向量化编程技巧_Python学习(六)向量化
  8. js 获取相同name元素的属性值
  9. mysql使用联合唯一索引会影响查询效率吗_想进大厂,这些Mysql索引底层知识你是必须知道的。...
  10. js forEach跳出循环
  11. JS/NPAP之间传递数组:NPVARIANT_TO_OBJECT/OBJECT_TO_NPVARIANT
  12. 安卓学习日志 Day15 — 数据库基础
  13. 试题 算法训练 印章
  14. 全国省市区行政编码数据表 sql格式
  15. 【小家java】JUC并发编程之:虚假唤醒(spurious wakeup)以及推荐的解决方案
  16. 【Spring Security Oauth2】构建资源服务器(二):授权管理(Web授权,注解授权:securedEnabled, prePostEnabled, jsr250Enabled)
  17. 担忧:房价八大预言,市场来检验。
  18. 阿里p7程序员哀叹:35岁,被通知合同不再续签
  19. TweenMax学习笔记整理
  20. 超好玩的硬币游戏,你会玩吗?

热门文章

  1. 全新2007高校BBS 睿智的冷笑话
  2. PX4通过I2C方式添加自定义传感器(2)
  3. 利用TCP重传机制来玩端口敲门服务
  4. SpringBoot通过freemarker模板,返回字符串或生成文件
  5. php 图片指定留白叠加缩放
  6. C语言socket编程中关于read()和write()的思考
  7. “云”智慧仪器与“云”智慧测试时代——数采DAQ、虚拟仪器VI和“试验室网络云时代”
  8. JVM介绍与知识脉络梳理
  9. 啥是正交实验简单了解
  10. Springboot毕设项目海尔空调售后服务系统d70j3java+VUE+Mybatis+Maven+Mysql+sprnig)