Android 安卓工具类:GoddessTNT工具类(属于我自己的工具类)
2020-03-27 19:14
381 查看
Android常用工具类封装
Android common tool class package
文章目录
- Android常用工具类封装
- No1. Dip和Px之间转换 (Conversion between Dip and Px)
- No2. Md5加密(Md5 encryption)
- No3. SHA常用加密 (SHA commonly used encryption)
- No4. ViewPager加载Fragment适配器 (ViewPager loads Fragment adapter)
- No5. 剪贴板复制和粘贴操作 (Clipboard copy and paste operations)
- No6. 自定义加载框 (Custom load box)
- No7. Bitmap保存到本地相册 (Bitmap save to local album)
- No8. 手机号检验正确性 (Mobile phone number check correctness)
- No9. WebView工具类 (WebView tool class)
源代码:
Github: https://github.com/ThirdGoddess/GoddessTNT
CSDN: https://myhub.blog.csdn.net
欢迎大家在Github上共维护,方便大家使用!
刚开始写这个库,东西有点少,以后我将时常增加东西!
使用方法:
工程下build.gradle添加 maven { url ‘https://jitpack.io’ }
Add maven { url ‘https://jitpack.io’ } under build.gradle
allprojects { repositories { google() jcenter( //add maven { url 'https://jitpack.io' } } }
Modle之下添加 implementation 'com.github.ThirdGoddess:GoddessTNT:v1.7’
Add under Modle implementation 'com.github.ThirdGoddess:GoddessTNT:v1.7’
dependencies { ··· implementation 'com.github.ThirdGoddess:GoddessTNT:v1.7' }
No1. Dip和Px之间转换 (Conversion between Dip and Px)
//px转dip //Convert px to dip //DipPx.pxGoDip(Context, dpValue); DipPx.pxGoDip(this, 123f); //dip转px //Convert dip to px //DipPx.pxGoDip(Context, pxValue); DipPx.dipGoPx(this, 123f);
No2. Md5加密(Md5 encryption)
//Md5加密 //Md5 encryption //Md5.toMd5(clearText); String s = Md5.toMd5("明文/Clear text"); //s = 密文 //s = Ciphertext
No3. SHA常用加密 (SHA commonly used encryption)
//Sha常用加密 String sha1 = SHA.toSHA1("#"); String sha224 = SHA.toSHA224("#"); String sha256 = SHA.toSHA256("#"); String sha384 = SHA.toSHA384("#"); String sha512 = SHA.toSHA512("#");
No4. ViewPager加载Fragment适配器 (ViewPager loads Fragment adapter)
适用于普通 (Suitable for ordinary)
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); List<Fragment> fragmentList = new ArrayList<>(); fragmentList.add(new TestFragment()); fragmentList.add(new TestFragment()); ... //下面二选一 (Adapter one by one) viewPager.setAdapter(new ViewPagerFragmentStateAdapter(getSupportFragmentManager(), fragmentList)); //或者 or viewPager.setAdapter(new ViewPagerFragmentAdapter(getSupportFragmentManager(), fragmentList)); //FragmentStatePagerAdapter:在每次切换页面的时候,是将fragment进行回收,适合页面较多的fragment使用,这样就不会消耗更多的内存。 //FragmentStatePagerAdapter: Each time the page is switched, the fragment is recycled, which is suitable for the fragment with more pages, so that it does not consume more memory. //FragmentPagerAdapter:在每次切换页面的时候,是将fragment进行分离,适合页面较少的fragment使用以保存一些内存,对系统内存不会有太大影响。 //FragmentPagerAdapter: Each time the page is switched, the fragment is separated, and the fragment is used for a small number of pages to save some memory, which does not have much impact on system memory.
No5. 剪贴板复制和粘贴操作 (Clipboard copy and paste operations)
//将字符串复制到剪贴板 //Copy this string to clipboard. Clipboard.putClipboard(this, "copy the text!"); Clipboard.putClipboard(this, "lable", "copy the text!"); //获取剪贴板上的值 //Get string on clipboar. String clipboard = Clipboard.getClipboard(this);
No6. 自定义加载框 (Custom load box)
所有用法(ProgressBar的颜色跟随你的App颜色走的)
//启动App时初始化一次,需要什么set什么,主要用于全局设定,不用全部set DialogUtils dialogTool = new DialogUtils.DialogSetting() .setDialogTextColor("#000000")//设置加载框字体颜色,默认跟随系统 .setBackgroundColor(null)//设置背景颜色,默认是白色 .setDialogTextStyle(true)//字体是否加粗,默认不加粗 .setTextSize(15f)//字体大小,默认大小是根据布局设定 .setCancelable(false)//点击空白处是否停止加载,默认false .setText("加载中...")//加载提示文字,默认就是加载中 .setTextGone(false)//是否隐藏文字,默认不隐藏 .over();//必须调用over
//创建Dialog final LoadDialog loadDialog = new LoadDialog(this); //点击空白处是否停止加载,这里的优先级最高 loadDialog.setCancelable(true); //加载提示文字,这里的优先级最高 loadDialog.setText("加载中..."); //是否隐藏文字,这里的优先级最高 loadDialog.setTextGone(false); //显示加载框 loadDialog.show(); //模拟6s后加载完成 new Handler().postDelayed(new Runnable() { @Override public void run() { //关闭加载框 loadDialog.dismiss(); } }, 6000);
以上是这个加载框的所有方法,一般不用那么多,只需要按下面这样写就行
//启动App时初始化一次,需要什么set什么,主要用于全局设定,不用全部set DialogUtils dialogTool = new DialogUtils.DialogSetting() .setDialogTextColor("#000000")//设置加载框字体颜色,默认跟随系统 .setBackgroundColor(null)//设置背景颜色,默认是白色 .setDialogTextStyle(true)//字体是否加粗,默认不加粗 .setTextSize(15f)//字体大小,默认大小是根据布局设定 .setCancelable(false)//点击空白处是否停止加载,默认false .setText("加载中...")//加载提示文字,默认就是加载中 .setTextGone(false)//是否隐藏文字,默认不隐藏 .over();//必须调用over //================================================================== //创建Dialog final LoadDialog loadDialog = new LoadDialog(this); //显示加载框 loadDialog.show(); //模拟6s后加载完成 new Handler().postDelayed(new Runnable() { @Override public void run() { //关闭加载框 loadDialog.dismiss(); } }, 6000);
No7. Bitmap保存到本地相册 (Bitmap save to local album)
注意!一定要有动态申请读写权限!虽然工具类中已经集成动态申请读写权限,但不建议用这里的动态申请,以免首次操作保存图片失败!!!建议提前申请,比如App启动的时候,下面给出动态申请的方法:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
动态申请
//申请读写权限 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { if (ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions((Activity) context, PERMISSIONS_STORAGE, 690); } }
工具类使用方法:
//模拟数据源 imageView.setImageResource(R.mipmap.xm); //模拟Bitmap Bitmap bitmap = ((BitmapDrawable) ((ImageView) imageView).getDrawable()).getBitmap(); //第一种方法,会自动生成路径和文件名来进行保存 //上下文, bitmap boolean b = ImageUtils.saveBitmap(this, bitmap); //第二种方法,自定义路径和文件名来保存 //上下文, bitmap, 路径和文件名 boolean b1 = ImageUtils.saveBitmap(this, bitmap, "/sdcard/pic/helloworld.jpg"); //第三种方法,增加动态申请权限回调 onRequestPermissionsResult 方法 //上下文, bitmap, 路径和文件名, 返回状态码 boolean b2 = ImageUtils.saveBitmap(this, bitmap, "/sdcard/pic/helloworld.jpg", 123); if (b) { Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); } //以上都是返回布尔类型,返回true代表保存成功,false代表保存失败,可以不接 //收值,直接调用,如下 ImageUtils.saveBitmap(this, bitmap);
No8. 手机号检验正确性 (Mobile phone number check correctness)
boolean correctness = Phone.isCorrectness("12345678910");
No9. WebView工具类 (WebView tool class)
public class MainActivity extends AppCompatActivity { private WebView webView; @SuppressLint("AddJavascriptInterface") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //初始化(支持加载框) Web web = new Web(this, webView); //不支持加载框 //Web web = new Web(webView); //支持Js web.setJs(); //开启屏幕自适应 //web.setAdapt(); //开启并支持缩放 //web.setZoom(); //允许访问文件 //web.setAccessFiles(); //支持Js打开新窗口 //web.setJsOpenWindows(); //设置位UTF-8编码格式 //web.setUTF8(); //设置支持自动加载图片 //web.setAutoLoadImage(); //可以取消当前WebView长按选择文字 //web.setNoSelectionText(); //开启加载框 //web.setLoadDialog(); //加载模式(是否缓存、优先使用缓存、使用网络等可以在这里设置) web.setLoadModle(Web.LOAD_CACHE_ELSE_NETWORK); //是否保持本页跳转 //web.setKeepView(true); //开始加载、加载完成、跳转监听 web.setOnLoadListener(new Web.OnLoadListener() { @Override public void onStart(WebView view, String url, Bitmap favicon) { Log.d("mylog-start", "start"); } @Override public void onFinish(WebView view, String url) { Log.d("mylog-finish", "finish"); } @Override public void urlLoading(WebView view, String url) { Log.d("mylog-loading", "loading"); } }); //进度监听 web.setProgressListener(new Web.OnProgressListener() { @Override public void onProgressChanged(WebView view, int newProgress) { Log.d("mylog-Changed", newProgress + ""); } @Override public void onReceivedTitle(WebView view, String title) { Log.d("mylog-ReceivedTitle", title); } }); //加载地址 web.loadUrl("https://myhub.blog.csdn.net/"); //加载assets文件夹下的文件(只需要文件名+.后缀就可以,内部已经封装好) //web.loadAssetsFile("index.html"); //关于互调可以参考https://blog.csdn.net/qq_40881680/article/details/82755369 //安卓调用JS //web.post("functionName()"); //JS调用Android //webView.addJavascriptInterface(new MyObject(), "jsto"); //最后提醒,记得加网络权限哦!<uses-permission android:name="android.permission.INTERNET" /> } private void initView() { webView = (WebView) findViewById(R.id.webView); } }
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- android(安卓)开源框架 使用在线工具jsonschema2pojo根据json生成java对象
- Android学习之工具类二:播放声音工具类
- Android Killer--安卓反编译工具
- APT(Android Performance Testing Tools)安卓平台高效性能测试工具
- 跪求~~~大神啊!安卓(android)手机下载的测距软件如smart tools工具中的测距(distance)工具如何测距???
- 利用infer工具分析安卓android源码
- android工具类(2)NetWorkHelper 网络工具类
- 精妙测试你掌中的寰宇 --零一拼装Android测试工具“ThreadingTest”- 安卓App版优雅面世
- Android开发中实用工具之--Log工具类
- Android学习之工具类三:日志管理工具类
- 20岁印度工程师谈HTML5、CSS3开发Android和iOS应用--各语言开发安卓工具
- [Android_cracker] 最新安卓解包工具
- Android 工具类】常用工具类(方法)大全
- [置顶] Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能
- 安卓原生工具类--android开发不要盲目写工具了
- 【Android工具】时间工具类
- 安卓工具类集合—— 1 时间、时间戳转换工具
- Android 常用开发工具类之 AppVersionUtil (获取应用版本信息工具)
- Android SDK:Android standard develop kits 安卓开发的工具集
- Android学习之工具类四:屏幕管理工具类