- 博客(41)
- 收藏
- 关注

原创 Android 实现拍照 和拉起相册库 带裁剪功能
布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layo..
2020-08-10 11:38:57
620

原创 Retrofit2+OkHttp3+RxJava网络请求封装
第一步: 添加依赖//RxJavaimplementation 'io.reactivex:rxjava:1.1.3'//RxAndroidimplementation 'io.reactivex:rxandroid:1.1.0'//retrofitimplementation 'com.squareup.retrofit2:retrofit:2.0.0'//retrofit依赖Gsonimplementation 'com.squareup.retrofit2:converte...
2020-08-03 15:51:22
792

原创 Android使用Echarts 进行图表开发 (WebView加载)
在两年前时候北京的一家公司是给高中生做理化生结合他们课本做的一款App,App中的功能是实现一些点线图和柱状图还有扇形图,平时开发中其实App中去加载一些这种数据图很少遇到, 但是也会有很多人不太理解在实际的Android开发中怎么去运用开发,其实Android中自定义View是可以实现的,但是市面上科技已经很发达 有很多第三方的开源运用js写的,使...
2020-04-23 15:12:20
5160
2

原创 Android 系统跳转实现分享功能(如 微信 朋友圈 QQ QQ空间 微博)
前者基本都是一个实现思路, 唯独微博实现比较特殊一点。 我对两个类做了封装 只要配置没问题,拿去直接用。 先来一波配置 清单文件下<provider android:name="androidx.core.content.FileProvider" android:authorities="包名.fileprovider"...
2020-03-09 15:20:51
2925
7

原创 Android 实现极光推送 以及页面的跳转
当初说坚持更新博客(两天一更),然而没有坚持下来,一晃一年过去了。。。岁月是把杀猪刀啊,言归正传 今天来记录一下第三方应用(极光推送),之前做过然后这次项目中需要接入极光推送,然后我就打开了之前的项目,然后寻思吧之前的代码拿来,这样岂不是可以省去很多时间,然而并不是。。。。 理想是没美好的,现实是残酷的。因为第三方平台也是在更新,所以,我就从新打开了极光...
2020-03-07 16:04:55
2455

原创 OkGo 网络请求框架
//okgoimplementation 'com.lzy.net:okgo:3.0.4' package com.upenv.hnpolluction.application;import android.app.Application;import com.lzy.okgo.OkGo;import com.lzy.okgo.cache.CacheMode;import...
2018-08-31 16:17:40
2076

原创 Android使用CircleImageView实现圆形头像
一般做社交类APP,包括其他很多只要有个人页面的基本都会有设置头像的这个功能,而且大多数也是圆形的头像,显的也比较美观,github上有很多别人的第三方工具类,今天没事就自己研究了一下看了看源码,下面附上代码。 自定义ViewCircleImageView package com.zero.cui.circleimageview;import android.annotati...
2018-06-20 15:37:58
2952

原创 Android中三种数据解析技术
一、第一种方法用Android原生技术JSON来解析 1、什么是json json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过json来进行交换。尤其是对于web开发来说,...
2018-05-07 14:48:21
2004

原创 Android仿今日头条首页的底部导航栏
平时开发中基本大多数APP都会添加导航栏,今天我们就来讲讲底部导航栏的实现,正好我前端时间写了一个模仿今日头条的Demo,这篇文章我直接把源码附上其中也加了很多注释让博友们看起来也是通俗易懂,基本吧代码拷贝上就可以实现,实现起来也是非常的简单,那么我们就拿今日头条来说一下吧。 先说实现底部导航栏所用到的控件TextView+ImageView+Fragment:我们先上效果图 ...
2018-04-28 10:56:03
5236
原创 android 保存Bitmap到本地图片
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>public String sdCardDir = Environme..
2020-12-08 10:30:53
2020
原创 Android拼团堆叠头像实现
implementation'com.android.support:recyclerview-v7:28.0.0'implementation 'com.github.bumptech.glide:glide:4.5.0'//设置数据源private ImageViewBean imageViewBean;private List<ImageViewBean> list = new ArrayList<>();private RecyclerView r...
2020-11-23 15:22:11
987
原创 Android RecyclerView 添加可拖动的滚动条
几个属性:android:scrollbars" 一般都是垂直的滚动条设置verticalandroid:scrollbarSize 设置滚动条的宽度android:scrollbarThumbVertical:设置垂直滚动条颜色android:scrollbarTrackVertical :设置滚动条背景色<androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_industry" .
2020-11-13 17:03:51
1892
原创 CalculationUtils Android 计算工具类
//默认除法运算精度private static final int DEF_DIV_SCALE = 2;/** * 提供精确的加法运算。 * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2.
2020-10-29 09:38:28
487
转载 弄清楚Android存储路径
在平时开发当中,我们可能会纠结什么文件该存储在哪个目录下面,要么是不确定放哪,要么是放多了以后放乱了。那就弄清楚哪些文件存哪里吧。1.外部存储(SD卡存储)SD卡根目录,目录为 /storage/emulated/0Environment.getExternalStorageDirectory()目录为 /storage/emulated/0/Android/data/packagename/cache (packagename为应用包名)getExternal...
2020-09-27 10:16:03
2319
原创 校验数字 校验字符 正则表达式
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实.
2020-09-15 13:58:55
1671
原创 Android常用第三方框架
一 、图片加载库FrescoGithub地址: https://github.com/facebook/fresco// 1.添加依赖(最新已经更新到2.2.0)api 'com.facebook.fresco:fresco:1.9.0'// 2.清单文件中添加权限<uses-permission android:name="android.permission.INTERNET" />// 3.Application中初始化Fresco.initialize(this)
2020-09-07 14:24:18
578
原创 LogUtil 工具类
package com.cy.utils;import android.os.Environment;import android.util.Log;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;/** * .
2020-09-03 09:27:11
513
原创 Android 沉浸式状态适配 (完全适配各种屏幕 如 水滴屏 流海屏 等等)
package com.example.okhttp.utils;import android.annotation.TargetApi;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.os.Build;import android.view.View;import android.view.ViewGroup;import an.
2020-08-18 14:27:06
1092
原创 Android CollapsingToolbarLayout 实现上划toolbar渐变效果
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_paren.
2020-08-18 11:16:24
1261
原创 Android中实现倒计时 CountDownTimer
使用 CountDownTimer 实现倒计时/** * CountDownTimer timer = new CountDownTimer(3000, 1000)中, * 第一个参数表示总时间,第二个参数表示间隔时间。 * 意思就是每隔一秒会回调一次方法onTick,然后1秒之后会回调onFinish方法。 */CountDownTimer timer = new CountDownTimer(3000, 1000) { public void onTick(long millis
2020-08-18 10:30:42
462
原创 Android 实现ToolBar滑动渐变
title.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/top_bg" android:layout_width="match_parent
2020-08-18 10:25:43
511
原创 Android 获取手机的 IMEI 值 (设备标识码)
权限<uses-permission android:name="android.permission.READ_PHONE_STATE"/>private void setPhoneStateManifest(){ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)...
2020-08-13 08:39:07
5612
原创 Android 图片转换为 Base64 编码
/** * 将图片转换成Base64编码的字符串 */public static String imageToBase64(String path){ if(TextUtils.isEmpty(path)){ return null; } InputStream is = null; byte[] data = null; String result = null; try{ is = new FileInputStre.
2020-08-13 08:36:17
4462
3
原创 StatusBarUtil 适配各种屏幕状态栏
@SuppressWarnings("unused")public class StatusBarUtil { public static final int DEFAULT_STATUS_BAR_ALPHA = 112; private static final int FAKE_STATUS_BAR_VIEW_ID = R.id.statusbarutil_fake_status_bar_view; private static final int FAKE_TRANSLUC.
2020-07-29 10:32:28
2024
原创 ToastUtil
/** * Created by ${ShinnyYang} on 2019/5/8. */public class ToastUtil { public static boolean isShow = true; /** * 短时间显示Toast * * @param context * @param message */ public static void showShort(Context context, Char.
2020-07-28 17:20:58
424
原创 ScreenUtils 获取屏幕相关的辅助类
/** * 获取屏幕相关的辅助类 * Created by Administrator on 2017/2/21. */public class ScreenUtils { private ScreenUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获.
2020-07-28 17:19:58
349
原创 DateUtils 获取时间工具类
/** * Created by DateUtils on 2019/10/14. */public class DateUtils { private static final String TAG = "DataUtils"; public static String getTodayDateTime() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", .
2020-07-28 17:19:21
1858
原创 RetrofitUtil 工具类
/** * retrofit请求工具类 * Created by ${ShinnyYang} on 2019/1/25. */public class RetrofitUtil { /** * 超时时间 */ private static volatile RetrofitUtil mInstance; private static OkHttpClient mOkHttpClient; /** * 单例封装 * .
2020-07-28 17:18:39
317
原创 Android 11 自定义 Toast 被禁止
Android 11(R)是2020年的下一代 Android,Google 于前段时间发布了Android 11: Developer Preview 3在 Android 11 Toast 的行为发生了变更主要是以下四点禁止后台自定义 Toast text toast 不允许自定义 setView() 被弃用 新增 Toast.Callback 回调自定义 Toast 「不能」 在 app 处于后台时显示,取而代之会显示 「"Background custom to...
2020-07-28 17:16:07
2990
原创 Android 加载富文本
//富文本implementation 'com.github.huzhenjie:RichTextEditor:1.0.4'<com.scrat.app.richtext.RichEditText android:id="@+id/tv_xiangqing" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="...
2020-07-20 11:50:01
1841
原创 Android 使用RxJava异步实现倒计时
// Retrofit库implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'implementation 'com.squareup.retrofit2:converter-gson:2.3.0'//rxjava2implementation 'io.reactivex.rxjava2:rxjava:2.1.16'i.
2020-06-18 10:41:55
598
原创 Android调用系统通讯录
废话不多说,先来说一下注意事项,然后直接上代码。 就是在清单文件里面加了申请权限然而不管事儿。<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 用于读取手机当前的状态 --><uses-permission android:name="android.permission.READ_CONTACTS" />原因是因为6.0...
2020-06-18 10:36:46
1616
原创 Android Glide自定义圆角处理
平时我们开发中会遇到UI出的带圆角的图片,平时做的图片缓存加载框架基本都是 Glide,那么我们就在Glide上来说一说实现方法。 Glide是谷歌为我们推荐的一个图片加载库。为什么要选择使用Glide呢? 1、代码有人维护,不至于出现问题,项目组都搞不定的时候问题无法解决。(ImageLoader已没人维护了) 2、代码简洁,可读性很好。(Fresc...
2020-04-11 12:01:11
4623
原创 Activity启动黑/白屏原因与解决方式
出现情况 最常见的就是App启动时候加载启动页出现白屏一段时间,给用户的感觉是非常不好的。 加载方式 我们在Activity的onCreate()方法中调用了setContentView()方法时候,传入了我们绘制的layout布局,也就是我们理论上应该看到的Activity布局内容,但是Android系统在启动一个新的Activity时,首先进行的并不...
2020-04-10 14:29:13
919
原创 仿iso底部对话框
//仿iso底部对话框implementation project(path: ':iOS_Dialog_Library')new ActionSheetDialog(MainActivity.this) .builder() .setCancelable(true) .setCanceledOnTouchOutside(true) ...
2018-08-31 16:20:45
330
原创 日期选择器
private int mYear;private int mMonth;private int mDay; //监测日期holder.tv_JCRQ.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { itemPosi...
2018-08-31 16:16:22
347
原创 EventBus 3.0使用详解
一、概述 我们在进行平时的项目开发中,基本上需求都要实现应用程序组件之间的通信,比如在子线程间进行请求数据,当数据请求完毕后通过Handler消息机制来更新UI,当我们项目开发的时间久了会越来越复杂,代码也是会越来越多,那么改如何解决呢,EventBus就帮我们解决了模块与后台线程进行通讯的问题,而且高度耦合。 那么什么是EventBus呢? ...
2018-05-08 13:33:00
235
原创 自定义控件之贝赛尔曲线实现手势轨迹
一、概念 1、先讲一下什么是贝塞尔曲线 在数学的数值分析领域中,贝赛尔曲线(Bézier曲线)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。 2、贝塞尔曲线的目的又是什么呢 利用贝塞尔曲线,我们能实现平滑的手势轨迹效果 ,还有比如说很多酷炫的效果基本也是有贝塞尔曲线来实现的,或者也...
2018-05-04 13:30:47
797
原创 WebView基础使用详解
一、概述 先说一下实现的几个方面 ,显示是内置浏览器打开网页,然后在是WebView打开网页,在了就是调用内置的htnl文件呈现,最后是WebView呈现的适配问题。使用手机内置浏览器打开网页 还是先上效果图 由于拿的测试机是平板所以呈现出来不是特别的美观,但是功能实现是没问题的,就是打开一...
2018-05-03 14:09:33
507
原创 PopUpWindow基础使用详解
先上效果图: 一、PopupWindow与AlertDialog的区别 有很多的博友好奇同样是实现一个弹窗的功能,为什么就不选择用AlertDialog呢?而且AlertDialog实现起来也非常的简单。好的,那么我们就说一下AlertDialog不能指定显示的位置,只能默认显示在屏幕的中间,(它有一个参数WindowManager来改变位置)而Po...
2018-05-02 14:48:08
363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人