Android 自定义开源库 EasyView

这篇具有很好参考价值的文章主要介绍了Android 自定义开源库 EasyView。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

EasyView

  这是一个简单方便的Android自定义View库,我一直有一个想法弄一个开源库,现在这个想法付诸实现了,如果有什么需要自定义的View可以提出来,不一定都会采纳,合理的会采纳,时间周期不保证,咱要量力而行呀,踏实一点。

配置EasyView

1. 工程build.gradle 或 settings.gradle配置

   代码已经推送到MavenCentral(),在Android Studio 4.2以后的版本中默认在创建工程的时候使用MavenCentral(),而不是jcenter()

   如果是之前的版本则需要在repositories{}闭包中添加mavenCentral(),不同的是,老版本的Android Studio是在工程的build.gradle中添加,而新版本是工程的settings.gradle中添加,如果已经添加,则不要重复添加。

repositories {
    ...
    mavenCentral()
}

2. 使用模块的build.gradle配置

   例如在app模块中使用,则打开app模块下的build.gradle,在dependencies{}闭包下添加即可,之后记得要Sync Now

dependencies {
    implementation 'io.github.lilongweidev:easyview:1.0.5'
}

使用EasyView

这是一个自定义View的库,会慢慢丰富里面的自定义View,我先画个饼再说,源码地址:EasyView

一、MacAddressEditText

MacAddressEditText是一个蓝牙Mac地址输入控件,点击之后出现一个定制的Hex键盘,用于输入值。

Android 自定义开源库 EasyView

1. xml中使用

首先是在xml中添加如下代码,具体参考app模块中的activity_mac_address.xml

    <com.easy.view.MacAddressEditText
        android:id="@+id/mac_et"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:boxBackgroundColor="@color/white"
        app:boxStrokeColor="@color/black"
        app:boxStrokeWidth="2dp"
        app:boxWidth="48dp"
        app:separator=":"
        app:textColor="@color/black"
        app:textSize="14sp" />

2. 属性介绍

这里使用了MacAddressEditText的所有属性,可以自行进行设置,使用说明参考下表。

属性 说明
app:boxBackgroundColor 设置输入框的背景颜色
app:boxStrokeColor 设置输入框的边框颜色
app:boxStrokeWidth 设置输入框的边框大小
app:boxWidth 设置输入框大小
app:separator Mac地址的分隔符,例如分号:
app:textColor 设置输入框文字颜色
app:textSize 设置输入框文字大小

3. 代码中使用

    MacAddressEditText macEt = findViewById(R.id.mac_et);
    String macAddress = macEt.getMacAddress();

macAddress可能会是空字符串,使用之前请判断一下,参考app模块中的MacAddressActivity中的使用方式。

二、CircularProgressBar

CircularProgressBar是圆环进度条控件。

Android 自定义开源库 EasyView

1. xml中使用

首先是在xml中添加如下代码,具体参考app模块中的activity_progress_bar.xml

    <com.easy.view.CircularProgressBar
        android:id="@+id/cpb_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        app:maxProgress="100"
        app:progress="10"
        app:progressbarBackgroundColor="@color/purple_500"
        app:progressbarColor="@color/purple_200"
        app:radius="80dp"
        app:strokeWidth="16dp"
        app:text="10%"
        app:textColor="@color/teal_200"
        app:textSize="28sp" />

2. 属性介绍

这里使用了MacAddressEditText的所有属性,可以自行进行设置,使用说明参考下表。

属性 说明
app:maxProgress 最大进度
app:progress 当前进度
app:progressbarBackgroundColor 进度条背景颜色
app:progressbarColor 进度颜色
app:radius 半径,用于设置圆环的大小
app:strokeWidth 进度条大小
app:text 进度条中心文字
app:textColor 进度条中心文字颜色
app:textSize 进度条中心文字大小

3. 代码中使用

    CircularProgressBar cpbTest = findViewById(R.id.cpb_test);
    int progress = 10;
    cpbTest.setText(progress + "%");
    cpbTest.setProgress(progress);

参考app模块中的ProgressBarActivity中的使用方式。

三、TimingTextView

TimingTextView是计时文字控件。

Android 自定义开源库 EasyView

1. xml中使用

首先是在xml中添加如下代码,具体参考app模块中的activity_timing_text.xml

    <com.easy.view.TimingTextView
        android:id="@+id/tv_timing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="计时文字"
        android:textColor="@color/black"
        android:textSize="32sp"
        app:countdown="false"
        app:max="60"
        app:unit="s" />

2. 属性介绍

这里使用了TimingTextView的自定义属性不多,只有3个,TextView的属性就不列举说明,使用说明参考下表。

属性 说明
app:countdown 是否倒计时
app:max 最大时间长度
app:unit 时间单位:s(秒)、m(分)、h(时)

3. 代码中使用

    TimingTextView tvTiming = findViewById(R.id.tv_timing);
    tvTiming.setMax(6);//最大时间
    tvTiming.setCountDown(false);//是否倒计时
    tvTiming.setUnit(3);//单位 秒
    tvTiming.setListener(new TimingListener() {
        @Override
        public void onEnd() {
            //定时结束
        }
    });
    //开始计时
    tvTiming.start();
    //停止计时
    //tvTiming.end();

参考app模块中的TimingActivity中的使用方式。

四、EasyEditText

EasyEditText是一个简易输入控件,可用于密码框、验证码输入框进行使用,效果图如下所示:
Android 自定义开源库 EasyView

1. xml中使用

首先是在xml中添加如下代码,具体参考app模块中的activity_easy_edittext.xml

    <com.easy.view.EasyEditText
        android:id="@+id/et_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:boxBackgroundColor="@color/white"
        app:boxFocusStrokeColor="@color/green"
        app:boxNum="6"
        app:boxStrokeColor="@color/black"
        app:boxStrokeWidth="2dp"
        app:boxWidth="48dp"
        app:ciphertext="false"
        app:textColor="@color/black"
        app:textSize="16sp" />

2. 属性介绍

这里使用了EasyEditText的所有属性,可以自行进行设置,使用说明参考下表。

属性 说明
app:boxBackgroundColor 设置输入框的背景颜色
app:boxFocusStrokeColor 设置输入框获取焦点时的颜色
app:boxNum 设置输入框的个数,4~6个
app:boxStrokeColor 设置输入框的边框颜色
app:boxStrokeWidth 设置输入框的边框大小
app:boxWidth 设置输入框大小
app:ciphertext 是否密文,用于密码框
app:textColor 设置输入框文字颜色
app:textSize 设置输入框文字大小

3. 代码中使用

        binding.cbFlag.setOnCheckedChangeListener((buttonView, isChecked) -> {
        binding.etContent.setCiphertext(isChecked);
        binding.cbFlag.setText(isChecked ? "密文" : "明文");
        });
        //输入框
        binding.btnGetContent.setOnClickListener(v -> {
        String content = binding.etContent.getText();
        if (content.isEmpty()) {
        showMsg("请输入内容");
        return;
        }
        if (content.length() < binding.etContent.getBoxNum()) {
        showMsg("请输入完整内容");
        return;
        }
        showMsg("输入内容为:" + content);
        });

参考app模块中的EasyEditTextActivity中的使用方式。

五、PieProgressBar

PieProgressBar是一个饼状进度条。

Android 自定义开源库 EasyView

1. xml中使用

首先是在xml中添加如下代码,具体参考app模块中的activity_pie_progress_bar.xml

    <com.easy.view.PieProgressBar
        android:id="@+id/progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:customAngle="right"
        app:gradient="false"
        app:gradientColorArray="@array/color"
        app:maxProgress="100"
        app:progress="5"
        app:progressbarColor="@color/green"
        app:radius="80dp" />

2. 属性介绍

这里使用了PieProgressBar的所有属性,可以自行进行设置,使用说明参考下表。

属性 说明
app:maxProgress 最大进度
app:progress 当前进度
app:progressbarColor 进度颜色
app:radius 半径,用于设置圆环的大小
app:strokeWidth 描边大小
app:gradient 是否开启进度颜色渐变
app:gradientColorArray 渐变颜色数组
app:customAngle 开始角度,可设置:right、bottom、left、top

3. 代码中使用

        //设置渐变
        binding.progress.setGradient(isChecked);
        //设置开始角度  
        binding.progress.setCustomAngle(angle);
        //设置进度
        binding.progress.setProgress(0);

参考app模块中的PieProgressBarActivity中的使用方式。

六、EasyDialog

EasyDialog是一个简易弹窗,你可以选择自定义xml使用或者快捷使用两种方式。

Android 自定义开源库 EasyView
Android 自定义开源库 EasyView

1. 自定义XML使用

在layout下创建一个dialog_warm_tip.xml,作为弹窗的布局,代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_dialog_bg">

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        android:text="弹窗标题"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/line"
        app:layout_constraintTop_toBottomOf="@+id/tv_title" />

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        android:text="你想要写什么内容呢?"
        android:textColor="@color/black"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view" />

    <View
        android:id="@+id/view_1"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/line"
        app:layout_constraintTop_toBottomOf="@+id/tv_content" />

    <TextView
        android:id="@+id/tv_cancel"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        android:text="取消"
        android:textColor="@color/black"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/view_2"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view_1" />

    <View
        android:id="@+id/view_2"
        android:layout_width="1dp"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/line"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/tv_confirm"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/tv_cancel"
        app:layout_constraintTop_toBottomOf="@+id/view_1" />

    <TextView
        android:id="@+id/tv_confirm"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        android:text="确定"
        android:textColor="@color/black"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/view_2"
        app:layout_constraintTop_toBottomOf="@+id/view_1" />
</androidx.constraintlayout.widget.ConstraintLayout>

使用示例代码如下所示:

private EasyDialog easyDialog;
        
private void showDialog() {
        EasyDialog.Builder builder = new EasyDialog.Builder(EasyDialogActivity.this)
        .setContentView(R.layout.dialog_warm_tip)
        //添加自定义动画
        .addCustomAnimation(Gravity.CENTER, true)
        //设置对话框可取消
        .setCancelable(true)
        //设置标题
        .setText(R.id.tv_title, "温馨提示")
        //设置内容
        .setText(R.id.tv_content, "您今天还没有搞钱,请记得搞钱!")
        //设置文字颜色
        .setTextColor(R.id.tv_confirm, ContextCompat.getColor(EasyDialogActivity.this, R.color.white))
        //设置背景资源
        .setBackground(R.id.tv_confirm, ContextCompat.getDrawable(EasyDialogActivity.this, R.drawable.shape_confirm_bg))
        //设置弹窗宽高
        .setWidthAndHeight(EasyUtils.dp2px(EasyDialogActivity.this, 320), LinearLayout.LayoutParams.WRAP_CONTENT)
        //添加点击事件  取消
        .setOnClickListener(R.id.tv_cancel, v1 -> {
            easyDialog.dismiss();
        })
        //添加点击事件  确定
        .setOnClickListener(R.id.tv_confirm, v2 -> {
            showMsg("我知道了!");
            easyDialog.dismiss();
        })
        //添加取消监听
        .setOnCancelListener(dialog -> {
            showMsg("弹窗取消了");
        })
        //弹窗消失监听
        .setOnDismissListener(dialog -> {
            showMsg("弹窗消失了");
        });
        //创建弹窗
        easyDialog = builder.create();
        //显示弹窗
        easyDialog.show();
}

2. 快捷使用

内置了一些XML和功能弹窗,一行代码调用即可,简单方便。

显示提示弹窗:

EasyDialogUtils.showTipDialog(EasyDialogActivity.this, "温馨提示", "端午又要调休!",
                        () -> showMsg("取消"), () -> showMsg("确定"));

显示选择弹窗:

final String[] stringArr = {"富强", "民主", "文明", "和谐", "自由", "平等", "公正", "法治", "爱国", "敬业", "诚信", "友善"};
List<String> stringList = new ArrayList<>(Arrays.asList(stringArr));
EasyDialogUtils.showSelectDialog(EasyDialogActivity.this, "社会主义核心价值观",
        stringList, this::showMsg);

参考app模块中的EasyDialogActivity中的使用方式。文章来源地址https://www.toymoban.com/news/detail-461746.html

到了这里,关于Android 自定义开源库 EasyView的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 自定义View实战—制作一个简易输入框

    这次我们来做一个简易输入框,可以用于密码输入和验证码输入。 依然在EasyView中进行创建,在 com.easy.view 下新建一个 EasyEditText ,继承自 View ,实现里面的构造方法。 ① 构造方法 然后我们继承自 View ,重写里面的构造方法,代码如下: 下面就可以增加样式了。 ② XML样式

    2024年02月10日
    浏览(37)
  • 【Android -- 开源库】推荐一个全局悬浮窗的框架(FloatWindow)

    在日常开发中,我们可能需要实现全局悬浮窗的需求: 点击悬浮窗图标可以跳转到一个固定的 Activity A; 用户在 app 内的任一 Activity 里都能看到悬浮窗(除了 Activity A) 悬浮窗可以关闭,可以拖动,拖动过程中松手可以自动吸附到屏幕边缘。 支持拖动,提供自动贴边等动画 内

    2024年02月15日
    浏览(49)
  • 程序员不喜惯关闭电脑,这是一个伪命题

    目录 1.程序员不习惯关机,是一个伪命题 2.长期不关闭电脑,影响系统运行速度和性能 3.长期不关闭电脑,影响电脑硬件寿命 4.保持良好心态,不要人云亦云 5.长期不关闭电脑会给信息安全带来更多的隐患 6.是否关机应当因工作内容而已         网文中流行一种说法,说

    2024年02月20日
    浏览(36)
  • 传道授业20年,这是一个老网工的初心

    下午好,我是老杨。 昨天又是教师节 ,虽然是网工,但因为经常写写文章、聊聊技术,很多小友都会很客气地称我一声杨老师。 老杨收到了很多“教师节快乐”的私信,在此多谢各位小友的祝福 如果说当网工,是我蓄谋已久为之奋斗的事业,那输出技术干货、行业解读、和

    2024年02月09日
    浏览(38)
  • 预测“叫停GPT-4后续AI大模型”后续:这是一个囚徒困境

    生命未来研究所 (Future of Life Institute) 发表了一封公开信,信件:https://futureoflife.org/open-letter/pause-giant-ai-experiments/,呼吁暂停对比 GPT-4 更强大的模型进行 AI 训练,并有大量人签署了这份公开信,签署人包括马斯克及图灵奖获得者Bengio。 这封公开信指出,最近几个月,人工智

    2023年04月21日
    浏览(34)
  • 这是一个tg群组索引机器人,群组收录,群组索引

    tg的索引机器人,今天终于做出来了,索引群组收录 主要功能: 索引机器人+后台管理 积分管理、自动回复、广告管理、消费管理。 机器人管理:搜索管理、机器人群组管理、群组收录、营销软件卡密管理; 担保交易:商家入驻、商品发布、商品管理、订单管理、消费

    2024年02月05日
    浏览(46)
  • Android WebView:这是一份 详细 & 易懂的WebView学习攻略(含与JS交互

    Webview 的使用主要包括: Webview 类 及其 工具类( WebSettings 类、 WebViewClient 类、 WebChromeClient 类) 下面我将详细介绍上述4个使用类 使用方法 具体请看文章:Android开发:最全面、最易懂的Webview详解 在 Android WebView 的使用中,与前端 h5 页面交互的需求十分常见 Android 与 JS 通过

    2024年04月10日
    浏览(50)
  • SourceTree安装、跳过登陆、 这是一个无效的源/url路径多种原因解决方案

    https://www.sourcetreeapp.com/ 安装 SourceTree 时,需要使用atlassian授权,即使翻墙这个过程也会出现反应慢,收不到邮件或短信的问题,现提供跳过 atlassian账号 授权方法。 安装之后,转到用户本地文件夹下的 SourceTree 目录,没有则新建: %LocalAppData%AtlassianSourceTree 请把以上路径直

    2024年02月05日
    浏览(54)
  • 【差异表达分析】差异表达分析标准不标准化这是一个问题(含其其它报错问题)

    在一开始学习基因差异表达分析时,老师就强调用raw count做差异分析,相关文献和资料我也保存了不少,我之前弄清楚log2/cpm与count fpkm等不是在一个水平上讨论的问题,但是具体用的时候还是要栽个跟头才能印象深刻。 我在复现这篇推文时老文新看,今天来看看两个数据集的

    2024年02月10日
    浏览(45)
  • SourceTree 这是一个无效源路径。报错:git -c diff.mnemonicprefix=false -c core

    报错内容 : 使用SourceTree更换仓库地址和密码,提示这是一个无效的源路径 报错详细信息: 报错原因 SourceTree生成了一套userhosts 、passwd信息。每次都会直接调用。调用错误就会报错。 解决方案 Win10 C:UsersxxxxAppDataLocalAtlassianSourceTree 把这个文件下的password删掉。SourceTree会

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包