您的位置:首页 > 移动开发 > Android开发

Android 安卓工具类:GoddessTNT工具类(属于我自己的工具类)

2020-03-27 19:14 381 查看

Android常用工具类封装

Android common tool class package

文章目录

源代码:

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
  • 收藏
  • 分享
  • 文章举报
第三女神程忆难 博客专家 发布了117 篇原创文章 · 获赞 1519 · 访问量 90万+ 他的留言板 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: