├── .gitignore ├── .idea ├── .gitignore ├── appInsightsSettings.xml ├── compiler.xml ├── deploymentTargetDropDown.xml ├── deploymentTargetSelector.xml ├── encodings.xml ├── google-java-format.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml ├── migrations.xml ├── misc.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── gif │ ├── 1.gif │ ├── 2.gif │ ├── 3.gif │ ├── 4.gif │ └── 5.gif ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── llw │ │ └── easyview │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── llw │ │ │ └── easyview │ │ │ ├── EasyActivity.java │ │ │ ├── MainActivity.java │ │ │ └── used │ │ │ ├── EasyChartActivity.java │ │ │ ├── EasyDialogActivity.java │ │ │ ├── EasyEditTextActivity.java │ │ │ ├── EasyRulerActivity.java │ │ │ ├── MacAddressActivity.java │ │ │ ├── PieProgressBarActivity.java │ │ │ ├── ProgressBarActivity.java │ │ │ └── TimingTextActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ ├── round_check_24.xml │ │ ├── round_delete_36.xml │ │ ├── shape_confirm_bg.xml │ │ └── shape_dialog_bg.xml │ │ ├── layout │ │ ├── activity_easy_chart.xml │ │ ├── activity_easy_dialog.xml │ │ ├── activity_easy_edittext.xml │ │ ├── activity_easy_ruler.xml │ │ ├── activity_mac_address.xml │ │ ├── activity_main.xml │ │ ├── activity_pie_progress_bar.xml │ │ ├── activity_progress_bar.xml │ │ ├── activity_timing_text.xml │ │ └── dialog_warm_tip.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-anydpi-v33 │ │ └── ic_launcher.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ └── ic_logo.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── values-night │ │ └── themes.xml │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── llw │ └── easyview │ └── ExampleUnitTest.java ├── build.gradle ├── easy ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── easy │ │ └── view │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── easy │ │ │ └── view │ │ │ ├── CircularProgressBar.java │ │ │ ├── EasyEditText.java │ │ │ ├── EasyRuler.java │ │ │ ├── MacAddressEditText.java │ │ │ ├── PieProgressBar.java │ │ │ ├── TimingTextView.java │ │ │ ├── chart │ │ │ ├── EasyChart.java │ │ │ └── Point.java │ │ │ ├── dialog │ │ │ ├── DialogController.java │ │ │ ├── DialogViewHelper.java │ │ │ ├── EasyDialog.java │ │ │ ├── EasyDialogUtils.java │ │ │ ├── adapter │ │ │ │ └── StringAdapter.java │ │ │ └── listener │ │ │ │ ├── OnCancelListener.java │ │ │ │ ├── OnConfirmListener.java │ │ │ │ ├── OnItemChildClickListener.java │ │ │ │ ├── OnItemClickListener.java │ │ │ │ └── OnSelectListener.java │ │ │ ├── listener │ │ │ ├── HexKeyboardListener.java │ │ │ ├── NumberKeyboardListener.java │ │ │ ├── OnValueChangeListener.java │ │ │ └── TimingListener.java │ │ │ └── utils │ │ │ └── EasyUtils.java │ └── res │ │ ├── anim │ │ ├── dialog_from_bottom_anim_in.xml │ │ ├── dialog_from_bottom_anim_out.xml │ │ ├── dialog_from_left_anim_in.xml │ │ ├── dialog_from_left_anim_out.xml │ │ ├── dialog_from_right_anim_in.xml │ │ ├── dialog_from_right_anim_out.xml │ │ ├── dialog_from_top_anim_in.xml │ │ ├── dialog_from_top_anim_out.xml │ │ ├── dialog_scale_anim_in.xml │ │ └── dialog_scale_anim_out.xml │ │ ├── drawable │ │ ├── custom_divider.xml │ │ ├── round_close_24.xml │ │ ├── selector_cancel_bg.xml │ │ ├── selector_confirm_bg.xml │ │ ├── shape_bottom_left_radius_16_bg.xml │ │ ├── shape_bottom_right_radius_16_bg.xml │ │ ├── shape_cancel_16_bg.xml │ │ ├── shape_cancel_pressed_16_bg.xml │ │ ├── shape_confirm_16_bg.xml │ │ ├── shape_confirm_pressed_16_bg.xml │ │ └── shape_dialog_base_bg.xml │ │ ├── layout │ │ ├── dialog_select.xml │ │ ├── dialog_tip.xml │ │ ├── item_string.xml │ │ ├── lay_hex_keyboard.xml │ │ └── lay_number_keyboard.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── easy │ └── view │ └── ExampleUnitTest.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | /secring.gpg 17 | /key.properties 18 | secring.gpg 19 | key.properties 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/appInsightsSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/deploymentTargetSelector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/google-java-format.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 15 | 16 | 17 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/README.md -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.application' 3 | } 4 | 5 | android { 6 | namespace 'com.llw.easyview' 7 | compileSdk 33 8 | 9 | defaultConfig { 10 | applicationId "com.llw.easyview" 11 | minSdk 16 12 | targetSdk 33 13 | versionCode 106 14 | versionName "1.0.6" 15 | 16 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 17 | } 18 | 19 | buildTypes { 20 | release { 21 | minifyEnabled false 22 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 23 | } 24 | } 25 | compileOptions { 26 | sourceCompatibility JavaVersion.VERSION_1_8 27 | targetCompatibility JavaVersion.VERSION_1_8 28 | } 29 | 30 | buildFeatures { 31 | viewBinding true 32 | } 33 | } 34 | 35 | dependencies { 36 | 37 | implementation 'androidx.appcompat:appcompat:1.5.1' 38 | implementation 'com.google.android.material:material:1.6.1' 39 | implementation 'androidx.constraintlayout:constraintlayout:2.1.4' 40 | implementation project(path: ':easy') 41 | testImplementation 'junit:junit:4.13.2' 42 | androidTestImplementation 'androidx.test.ext:junit:1.1.3' 43 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' 44 | } -------------------------------------------------------------------------------- /app/gif/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/app/gif/1.gif -------------------------------------------------------------------------------- /app/gif/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/app/gif/2.gif -------------------------------------------------------------------------------- /app/gif/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/app/gif/3.gif -------------------------------------------------------------------------------- /app/gif/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/app/gif/4.gif -------------------------------------------------------------------------------- /app/gif/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lilongweidev/EasyView/57a01484b33e16b481e3c9f0707021e57800ab2c/app/gif/5.gif -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/androidTest/java/com/llw/easyview/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("com.llw.easyview", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 14 | 17 | 21 | 25 | 29 | 33 | 37 | 41 | 45 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/EasyActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.view.LayoutInflater; 7 | import android.view.MenuItem; 8 | import android.widget.Toast; 9 | 10 | import androidx.annotation.Nullable; 11 | import androidx.appcompat.app.AppCompatActivity; 12 | import androidx.viewbinding.ViewBinding; 13 | import java.lang.reflect.Method; 14 | import java.lang.reflect.ParameterizedType; 15 | import java.lang.reflect.Type; 16 | 17 | public abstract class EasyActivity extends AppCompatActivity { 18 | 19 | protected T binding; 20 | protected Context context; 21 | 22 | @Override 23 | protected void onCreate(@Nullable Bundle savedInstanceState) { 24 | onRegister(); 25 | super.onCreate(savedInstanceState); 26 | this.context = this; 27 | Type type = this.getClass().getGenericSuperclass(); 28 | if (type instanceof ParameterizedType) { 29 | try { 30 | Class clazz = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; 31 | //反射 32 | Method method = clazz.getMethod("inflate", LayoutInflater.class); 33 | binding = (T) method.invoke(null, getLayoutInflater()); 34 | } catch (Exception e) { 35 | e.printStackTrace(); 36 | } 37 | setContentView(binding.getRoot()); 38 | } 39 | onCreate(); 40 | } 41 | 42 | protected void onRegister() { 43 | 44 | } 45 | 46 | protected abstract void onCreate(); 47 | 48 | @Override 49 | public boolean onOptionsItemSelected(MenuItem item) { 50 | switch (item.getItemId()) { 51 | case android.R.id.home: 52 | onBackPressed(); 53 | return true; 54 | default: 55 | return super.onOptionsItemSelected(item); 56 | } 57 | } 58 | 59 | protected void showMsg(CharSequence easy) { 60 | Toast.makeText(context, easy, Toast.LENGTH_SHORT).show(); 61 | } 62 | 63 | protected void jumpActivity(final Class clazz) { 64 | startActivity(new Intent(context, clazz)); 65 | } 66 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview; 2 | 3 | import com.llw.easyview.databinding.ActivityMainBinding; 4 | import com.llw.easyview.used.EasyChartActivity; 5 | import com.llw.easyview.used.EasyDialogActivity; 6 | import com.llw.easyview.used.EasyRulerActivity; 7 | import com.llw.easyview.used.MacAddressActivity; 8 | import com.llw.easyview.used.PieProgressBarActivity; 9 | import com.llw.easyview.used.ProgressBarActivity; 10 | import com.llw.easyview.used.TimingTextActivity; 11 | import com.llw.easyview.used.EasyEditTextActivity; 12 | 13 | /** 14 | * 主页面功能跳转 15 | */ 16 | public class MainActivity extends EasyActivity { 17 | 18 | @Override 19 | protected void onCreate() { 20 | binding.btnMadAddress.setOnClickListener(v -> jumpActivity(MacAddressActivity.class)); 21 | binding.btnProgressBar.setOnClickListener(v -> jumpActivity(ProgressBarActivity.class)); 22 | binding.btnTimingText.setOnClickListener(v -> jumpActivity(TimingTextActivity.class)); 23 | binding.btnEasyEdittext.setOnClickListener(v -> jumpActivity(EasyEditTextActivity.class)); 24 | binding.btnPieProgressBar.setOnClickListener(v -> jumpActivity(PieProgressBarActivity.class)); 25 | binding.btnEasyDialog.setOnClickListener(v -> jumpActivity(EasyDialogActivity.class)); 26 | //binding.btnEasyChart.setOnClickListener(v -> jumpActivity(EasyChartActivity.class)); 27 | binding.btnEasyRuler.setOnClickListener(v -> jumpActivity(EasyRulerActivity.class)); 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/EasyChartActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import com.llw.easyview.EasyActivity; 4 | import com.llw.easyview.databinding.ActivityEasyChartBinding; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | /** 10 | * 简易图表使用 11 | */ 12 | public class EasyChartActivity extends EasyActivity { 13 | 14 | @Override 15 | protected void onCreate() { 16 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 17 | Map map = new HashMap<>(); 18 | map.put("一月", 20); 19 | map.put("二月", 10); 20 | map.put("三月", 30); 21 | map.put("四月", 60); 22 | map.put("五月", 50); 23 | //设置数据 24 | binding.eChart.setData(map); 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/EasyDialogActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.view.Gravity; 5 | import android.view.View; 6 | import android.widget.CompoundButton; 7 | import android.widget.LinearLayout; 8 | import android.widget.RadioGroup; 9 | 10 | import androidx.core.content.ContextCompat; 11 | 12 | import com.easy.view.dialog.EasyDialogUtils; 13 | import com.easy.view.dialog.EasyDialog; 14 | import com.easy.view.dialog.listener.OnSelectListener; 15 | import com.easy.view.utils.EasyUtils; 16 | import com.llw.easyview.EasyActivity; 17 | import com.llw.easyview.R; 18 | import com.llw.easyview.databinding.ActivityEasyDialogBinding; 19 | 20 | import java.util.ArrayList; 21 | import java.util.Arrays; 22 | import java.util.List; 23 | 24 | /** 25 | * 简易弹窗使用 26 | */ 27 | public class EasyDialogActivity extends EasyActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener, RadioGroup.OnCheckedChangeListener { 28 | 29 | private EasyDialog easyDialog; 30 | private EasyDialog.Builder builder; 31 | private int mGravity; 32 | private boolean mIsAnimation; 33 | private boolean mIsCancelable; 34 | private final String[] stringArr = {"富强", "民主", "文明", "和谐", "自由", "平等", "公正", "法治", "爱国", "敬业", "诚信", "友善"}; 35 | List stringList; 36 | @Override 37 | protected void onCreate() { 38 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 39 | 40 | builder = new EasyDialog.Builder(EasyDialogActivity.this); 41 | stringList = new ArrayList<>(Arrays.asList(stringArr)); 42 | initView(); 43 | } 44 | 45 | private void initView() { 46 | binding.btnShow.setOnClickListener(this); 47 | binding.btnShowTip.setOnClickListener(this); 48 | binding.btnShowSelect.setOnClickListener(this); 49 | binding.rgGravity.setOnCheckedChangeListener(this); 50 | binding.cbAnimation.setOnCheckedChangeListener(this); 51 | binding.cbCancelable.setOnCheckedChangeListener(this); 52 | } 53 | 54 | @Override 55 | public void onCheckedChanged(RadioGroup group, int checkedId) { 56 | if (builder != null) { 57 | switch (checkedId) { 58 | case R.id.rb_top: 59 | mGravity = Gravity.TOP; 60 | break; 61 | case R.id.rb_right: 62 | mGravity = Gravity.RIGHT; 63 | break; 64 | case R.id.rb_bottom: 65 | mGravity = Gravity.BOTTOM; 66 | break; 67 | case R.id.rb_left: 68 | mGravity = Gravity.LEFT; 69 | break; 70 | case R.id.rb_center: 71 | mGravity = Gravity.CENTER; 72 | break; 73 | } 74 | } 75 | } 76 | 77 | @Override 78 | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 79 | if (builder != null) { 80 | switch (buttonView.getId()) { 81 | case R.id.cb_animation: 82 | mIsAnimation = isChecked; 83 | break; 84 | case R.id.cb_cancelable: 85 | mIsCancelable = isChecked; 86 | break; 87 | } 88 | } 89 | } 90 | 91 | @SuppressLint("NonConstantResourceId") 92 | @Override 93 | public void onClick(View v) { 94 | switch (v.getId()) { 95 | case R.id.btn_show: 96 | showDialog(); 97 | break; 98 | case R.id.btn_show_tip: 99 | EasyDialogUtils.showTipDialog(EasyDialogActivity.this, "温馨提示", "端午又要调休!", 100 | () -> showMsg("取消"), () -> showMsg("确定")); 101 | break; 102 | case R.id.btn_show_select: 103 | EasyDialogUtils.showSelectDialog(EasyDialogActivity.this, "社会主义核心价值观", 104 | stringList, this::showMsg); 105 | break; 106 | } 107 | } 108 | 109 | /** 110 | * 显示弹窗 111 | */ 112 | private void showDialog() { 113 | builder.setContentView(R.layout.dialog_warm_tip) 114 | //添加自定义动画 115 | .addCustomAnimation(mGravity, mIsAnimation) 116 | //设置对话框可取消 117 | .setCancelable(mIsCancelable) 118 | //设置标题 119 | .setText(R.id.tv_title, "温馨提示") 120 | //设置内容 121 | .setText(R.id.tv_content, "您今天还没有搞钱,请记得搞钱!") 122 | //设置文字颜色 123 | .setTextColor(R.id.tv_confirm, ContextCompat.getColor(EasyDialogActivity.this, R.color.white)) 124 | //设置背景资源 125 | .setBackground(R.id.tv_confirm, ContextCompat.getDrawable(EasyDialogActivity.this, R.drawable.shape_confirm_bg)) 126 | //设置弹窗宽高 127 | .setWidthAndHeight(EasyUtils.dp2px(EasyDialogActivity.this, 320), LinearLayout.LayoutParams.WRAP_CONTENT) 128 | //添加点击事件 取消 129 | .setOnClickListener(R.id.tv_cancel, v1 -> { 130 | easyDialog.dismiss(); 131 | }) 132 | //添加点击事件 确定 133 | .setOnClickListener(R.id.tv_confirm, v2 -> { 134 | showMsg("我知道了!"); 135 | easyDialog.dismiss(); 136 | }) 137 | //添加取消监听 138 | .setOnCancelListener(dialog -> { 139 | showMsg("弹窗取消了"); 140 | }) 141 | //弹窗消失监听 142 | .setOnDismissListener(dialog -> { 143 | showMsg("弹窗消失了"); 144 | }); 145 | //创建弹窗 146 | easyDialog = builder.create(); 147 | //显示弹窗 148 | easyDialog.show(); 149 | } 150 | 151 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/EasyEditTextActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import com.llw.easyview.EasyActivity; 4 | import com.llw.easyview.databinding.ActivityEasyEdittextBinding; 5 | 6 | /** 7 | * 简易输入框使用示例 8 | */ 9 | public class EasyEditTextActivity extends EasyActivity { 10 | 11 | @Override 12 | protected void onCreate() { 13 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 14 | binding.cbFlag.setOnCheckedChangeListener((buttonView, isChecked) -> { 15 | binding.etContent.setCiphertext(isChecked); 16 | binding.cbFlag.setText(isChecked ? "密文" : "明文"); 17 | }); 18 | //输入框 19 | binding.btnGetContent.setOnClickListener(v -> { 20 | String content = binding.etContent.getText(); 21 | if (content.isEmpty()) { 22 | showMsg("请输入内容"); 23 | return; 24 | } 25 | if (content.length() < binding.etContent.getBoxNum()) { 26 | showMsg("请输入完整内容"); 27 | return; 28 | } 29 | showMsg("输入内容为:" + content); 30 | }); 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/EasyRulerActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import com.llw.easyview.EasyActivity; 4 | import com.llw.easyview.databinding.ActivityEasyRulerBinding; 5 | 6 | public class EasyRulerActivity extends EasyActivity { 7 | 8 | @Override 9 | protected void onCreate() { 10 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 11 | binding.ruler.setValue(170F, 80F, 250F, 1F); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/MacAddressActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import com.llw.easyview.EasyActivity; 4 | import com.llw.easyview.databinding.ActivityMacAddressBinding; 5 | 6 | /** 7 | * MacAddress 使用示例 8 | */ 9 | public class MacAddressActivity extends EasyActivity { 10 | 11 | @Override 12 | protected void onCreate() { 13 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 14 | //蓝牙地址输入框 15 | binding.btnMac.setOnClickListener(v -> { 16 | String macAddress = binding.macEt.getMacAddress(); 17 | if (macAddress.isEmpty()) { 18 | showMsg("请输入Mac地址"); 19 | return; 20 | } 21 | binding.btnMac.setText(macAddress); 22 | }); 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/PieProgressBarActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.widget.Toast; 5 | import com.llw.easyview.EasyActivity; 6 | import com.llw.easyview.R; 7 | import com.llw.easyview.databinding.ActivityPieProgressBarBinding; 8 | 9 | import java.util.Random; 10 | 11 | /** 12 | * 饼状进度条使用示例 13 | */ 14 | public class PieProgressBarActivity extends EasyActivity { 15 | 16 | @SuppressLint("NonConstantResourceId") 17 | @Override 18 | protected void onCreate() { 19 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 20 | //是否渐变 21 | binding.cbGradient.setOnCheckedChangeListener((buttonView, isChecked) -> { 22 | binding.cbGradient.setText(isChecked ? "渐变" : "不渐变"); 23 | binding.progress.setGradient(isChecked); 24 | }); 25 | //开始角度 26 | binding.rg.setOnCheckedChangeListener((group, checkedId) -> { 27 | int angle = 0; 28 | switch (checkedId) { 29 | case R.id.rb_0: 30 | angle = 0; 31 | break; 32 | case R.id.rb_90: 33 | angle = 90; 34 | break; 35 | case R.id.rb_180: 36 | angle = 180; 37 | break; 38 | case R.id.rb_270: 39 | angle = 270; 40 | break; 41 | } 42 | binding.progress.setCustomAngle(angle); 43 | }); 44 | binding.cbFlag.setOnCheckedChangeListener((buttonView, isChecked) -> { 45 | binding.progress.setCounterClockwise(isChecked); 46 | binding.cbFlag.setText(isChecked ? "逆时针" : "顺时针"); 47 | }); 48 | //设置随机进度值 49 | binding.btnSetProgress.setOnClickListener(v -> { 50 | int progress = Math.abs(new Random().nextInt() % 100); 51 | Toast.makeText(this, "" + progress, Toast.LENGTH_SHORT).show(); 52 | binding.progress.setProgress(progress); 53 | }); 54 | //设置0%进度值 55 | binding.btnSetProgress0.setOnClickListener(v -> binding.progress.setProgress(0)); 56 | //设置100%进度值 57 | binding.btnSetProgress100.setOnClickListener(v -> binding.progress.setProgress(100)); 58 | } 59 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/ProgressBarActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import android.graphics.Color; 4 | import android.widget.Toast; 5 | import com.llw.easyview.EasyActivity; 6 | import com.llw.easyview.R; 7 | import com.llw.easyview.databinding.ActivityProgressBarBinding; 8 | 9 | import java.util.Random; 10 | 11 | /** 12 | * 进度条使用示例 13 | */ 14 | public class ProgressBarActivity extends EasyActivity { 15 | 16 | @Override 17 | protected void onCreate() { 18 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 19 | 20 | //开始角度 21 | binding.rg.setOnCheckedChangeListener((group, checkedId) -> { 22 | int angle = 0; 23 | switch (checkedId) { 24 | case R.id.rb_0: 25 | angle = 0; 26 | break; 27 | case R.id.rb_90: 28 | angle = 90; 29 | break; 30 | case R.id.rb_180: 31 | angle = 180; 32 | break; 33 | case R.id.rb_270: 34 | angle = 270; 35 | break; 36 | } 37 | binding.cpbTest.setCustomAngle(angle); 38 | }); 39 | binding.cbFlag.setOnCheckedChangeListener((buttonView, isChecked) -> { 40 | binding.cpbTest.setCounterClockwise(isChecked); 41 | binding.cbFlag.setText(isChecked ? "逆时针" : "顺时针"); 42 | }); 43 | //圆形进度条操作 44 | binding.btnSetProgress.setOnClickListener(v -> { 45 | int progress = Math.abs(new Random().nextInt() % 100); 46 | Toast.makeText(this, "" + progress, Toast.LENGTH_SHORT).show(); 47 | binding.cpbTest.setText(progress + "%"); 48 | binding.cpbTest.setProgress(progress); 49 | binding.cpbTest.setGradient(true); 50 | binding.cpbTest.setColorArray(new int[]{Color.RED,Color.YELLOW}); 51 | }); 52 | 53 | } 54 | } -------------------------------------------------------------------------------- /app/src/main/java/com/llw/easyview/used/TimingTextActivity.java: -------------------------------------------------------------------------------- 1 | package com.llw.easyview.used; 2 | 3 | import com.llw.easyview.EasyActivity; 4 | import com.llw.easyview.databinding.ActivityTimingTextBinding; 5 | 6 | /** 7 | * 计时文字使用示例 8 | */ 9 | public class TimingTextActivity extends EasyActivity { 10 | 11 | @Override 12 | protected void onCreate() { 13 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 14 | //计时文本操作 15 | binding.tvTiming.setListener(() -> { 16 | binding.tvTiming.setText("计时文字"); 17 | binding.btnStart.setText("开始"); 18 | }); 19 | binding.cbFlag.setOnCheckedChangeListener((buttonView, isChecked) -> binding.cbFlag.setText(isChecked ? "倒计时" : "计时")); 20 | //计时按钮点击 21 | binding.btnStart.setOnClickListener(v -> { 22 | if (binding.tvTiming.isTiming()) { 23 | //停止计时 24 | binding.tvTiming.end(); 25 | binding.btnStart.setText("开始"); 26 | } else { 27 | binding.tvTiming.setMax(6); 28 | binding.tvTiming.setCountDown(binding.cbFlag.isChecked()); 29 | binding.tvTiming.setUnit(3);//单位 秒 30 | //开始计时 31 | binding.tvTiming.start(); 32 | binding.btnStart.setText("停止"); 33 | } 34 | }); 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_check_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_delete_36.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_confirm_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_dialog_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_easy_chart.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_easy_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 16 | 17 | 18 | 22 | 27 | 28 | 33 | 34 | 39 | 40 | 45 | 46 | 51 | 52 | 57 | 58 | 63 | 64 | 65 | 66 | 71 | 72 | 77 | 78 |