自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码出人生

生命不息,键盘不止!

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android原生计步功能的实现,记录当日步数(仿微信运动),不需要后台service

Android原生计步功能的实现,记录当日步数(仿微信运动),不需要后台service概述:通过调用Android4.4以上系统自带的计步传感器Sensor.TYPE_STEP_COUNTER,实现记录当日步数的逻辑,不需要后台service,因自带计步传感器记录的是开机以来所有的步数,所以需要自己处理跨天分割以及开关机的问题。1.封装了StepUtil供外界调用 /** *...

2019-11-04 14:09:33 6152 15

原创 安卓原生自定义的埋点统计功能的实现(仿友盟统计)

仿友盟统计安卓原生自定义的埋点统计功能的实现一般的统计需求我们直接通过友盟统计或者talkingdata等第三方的SDK就能满足,但是如果统计的维度较多,参数需要自定义等情况,并且需要上传数据至自己公司后台的情况下,这时候就只能进行自定义了。以下为自定义的埋点统计的工具类,核心代码如下:package com.xx.xx.utils;import android.content.Conte...

2019-10-25 15:29:54 1270 2

原创 安卓自定义View之带动画的饼状图

安卓自定义View之带动画的饼状图因为是金融类的app,包含有很多资产数据,需求是使用饼状图展示总资产的不同资产组成,不同资产间有白色间隔线,较大的资产会有放大的动画效果,整体进行动画绘制展示,效果如下:整体代码如下(全网唯一):package com.xx.xx.ui.view.widget;import android.animation.ValueAnimator;import...

2019-10-24 19:07:40 399 2

原创 安卓仿余额宝的资产数字跳动的动画效果

仿余额宝的资产数字跳动的动画效果因为是金融类的app,需求是想要实现总资产数字跳动的动画展示效果,这个需求本身没有什么难度,无非是使用属性动画来实现(优化前):ValueAnimator animator = ValueAnimator.ofInt(mStartValue, mEndValue); animator.setDuration(duration);...

2019-10-24 18:02:39 649

原创 Flutter入门:在Windows上搭建Flutter开发环境

使用镜像由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中:export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn必要的工具工具: Flut...

2019-07-25 17:15:58 716

原创 仿PC端12306的刷新loading动画的自定义view

想法由来大家肯定都在PC端的12306网站上买过票吧,最近的这两天又去买票的时候留意到这个刷新loading,觉得还是挺好看的,所以就想动手实现下,顺便把自定义view和动画的知识稍微再熟悉一遍。原12306的刷新图:实现的效果图如下:自定义view的代码如下(暂且就叫PassView吧)package com.example.yanxu.loading.view;import ...

2018-12-27 20:25:31 2855

原创 Android仿微信发起群聊的列表样式

场景:今天一个朋友微信找我说碰到个问题让我看下,就是仿微信发起群聊的那个列表样式,其实这个功能实现起来没什么困难的地方,但是他遇到的问题是,最后的那个“搜索”,随着前边列表的增加或删除动态的移动,他不知道怎么处理,我就帮忙看了下。其实网上也有类似仿微信发起群聊的文章,但是都是那个“搜索”固定在右侧的,所以这里需要特殊处理下。方案: 列表的样式,通过使用RecyclerView来实现 最后的...

2018-04-24 18:57:16 1790 1

原创 Android屏幕适配之加载网络图片的适配攻略

关于Android的屏幕适配方案网上有很多很多,很多大神讲的很全面也都很好,所以这里我就不班门弄斧了,这篇文章主要介绍安卓开发过程中加载网络图片(本文中加载图片的类库为Picasso),布局中ImageView不同宽高展示的适配方案,主要分为以下三大类:一、ImageView宽度小于屏幕宽度的(即原图宽高确定,且在原型图中宽高有明确标注的),比如item中的一个图片元素,或者其他布局情况下的一...

2018-04-19 16:29:53 2512

原创 解决Android7.0目录访问的异常Caused by: android.os.FileUriExposedException: file:

场景:正在开发的应用中有分享这样一个功能,这个分享是需要先把一篇pdf格式的文章下载到本地,然后再去进行分享的操作,在Android7.0之前都没有问题,但是7.0及以后的版本就会报这个异常,其实不止这一个场景,在其他需要访问目录文件的场景,也是会报这个异常原因:从Android7.0为了提高私有文件的安全性,面向Android N或更高版本的应用私有目录将被限制访问,也就是说从Andro...

2018-04-12 16:41:13 713

原创 Android开发中控制ScrollView直接滚动到顶部或底部

场景:开发的过程,如果一个页面子View比较多,一个屏幕放不下,此时我们大多会采用ScrollView来实现。然后产品可能会提这种需求,比如某个子View在最底部,产品想要页面进入就直接滑到最底部;或者是当页面滑到最底部时,点击某个按钮直接滑到顶部。还是先呈上方法,然后再来具体分析mScrollView.fullScroll(ScrollView.FOCUS_UP);//滑到顶部mScr...

2018-04-11 18:45:18 4524

原创 完美解决三星手机拍照后横竖屏切换导致的回调为null以致程序崩溃的问题(包括三星note3的特殊适配)

场景:安卓开发中我们经常会有拍照上传的需求,比如上传图片,或者上传头像等等,方法也比较常规,通过调用startActivityForResult(Intent intent, int requestCode)方法调起系统的拍照,然后在onActivityResult(int requestCode, int resultCode, Intent data)方法中对回调结果进行处理。相信很多同学会遇

2018-01-26 16:54:04 1151

原创 完美解决部分安卓手机调用系统拍照上传时图片旋转问题

实际开发中我们经常会有拍照上传图片,或者上传头像的需求,但是经常会发现部分手机,例如三星等,拍照后的图片会产生不同角度的旋转,原因是这些手机拍照后会有一个自动旋转的过程,具体解决思路也很简单,我们来看下具体代码://首先我们先获取当前图片的旋转角度 public static int readPictureDegree(String path) { int degree

2018-01-26 15:10:57 6411

原创 View的事件体系之View的位置参数

如图所示,为View的位置坐标与父容器的关系图,此图来源于老任的《Android开发艺术探索》这本书, 感兴趣的同学可以去看下,以此我们来简单介绍下View的位置参数的相关知识。 首先是4个基本属性top、left、right、bottom 如图,这几个属性,都是View相对于父容器的信息 top:左上角的纵坐标 left:左上角的横坐标 right:右下角的横坐标 bottom:右

2018-01-22 18:00:13 289

原创 从Android源码入手解决ScrollView与内部控件的滑动冲突问题

如图所示,父布局是一个ScrollView,内部一个子View-SelectView是一个自定义的水平滑动的View,当手指放在SelectView上左右滑动时,会与ScrollView的上下滑动事件产生冲突。平时我们也会碰到类似的这种ScrollView与内部控件的滑动冲突问题,比如嵌套ListView等等,先来说说如何解决吧SelectView.setOnTouchListener(n

2018-01-22 17:36:30 2563

原创 ClassCastException: ...RelativeLayout$LayoutParams cannot be cast to ...AbsListView$LayoutParams

java.lang.ClassCastException: android.widget.RelativeLayout LayoutParams cannot be cast to android.widget.AbsListView LayoutParams原因:FrameLayout的父控件是一个LinearLayout控件,LinearLayout为子控件分配空间的时候,获取FrameL

2018-01-10 16:38:15 378

原创 Android开发Snackbar的简单使用

Snackbar其实可以理解为是Toast的升级版,因为Toast只是有一个告知的功能,但是并不能给用户选择的机会,而Snackbar可以很好地解决这个问题,它的使用方法类似Toast,效果类似Dialog,这里简单介绍下使用方法场景:比如当用户点击退出登录时,也许用户是误操作,那么此时就可以在退出登录按钮的点击事件里面加上Snackbar来给用户一个简单的交互Snackbar bar =

2018-01-10 15:12:38 450

原创 Android存储之SharePreferences保存Map

众所周知SharePreferences是安卓中一个轻量级的存储类,可以存储字符串等类型的数据,但如何通过SP保存一个Map可能有很多同学不知道怎么做,这里简单介绍下场景:工作需要动态保存一个map,每次需要进行查询是否有某个元素,有的话就不保存,没有就保存 //取出存储的mappublic static Map getMap(Context context) { Map def

2018-01-09 19:37:36 1777

原创 去掉RecyclerView等可滑动控件滑动到边缘时的阴影(光晕)效果

RecyclerView等可滑动控件默认的是会有滚动条以及滑动到边缘时的阴影(光晕)效果的,那么怎样去掉这两个默认属性呢,在这里简单的介绍一下滚动条效果 1、通过xml文件设置 android:scrollbars=”“有三个属性 a.none:去掉滚动条 b.horizontal:设置水平的滚动条 c.vertical:设置垂直的滚动条 2、通过java代码设置 a.Recy

2018-01-09 19:14:24 4652 6

原创 AndroidManifest清单文件合并失败 Error:Execution...Manifest merger failed with multiple errors, see logs

Error:Execution failed for task ‘:app:processDebugManifest’.> Manifest merger failed with multiple errors, see logs异常提示:清单文件合并失败 异常情形描述:更换极光推送的JPUSH_APPKEY导致(或在其他更改清单文件配置的情况下也可能会出现) 解决方法一:too

2016-12-09 11:44:56 4736

原创 安卓开发异常rx.exceptions.OnErrorNotImplementedException: Must be called from main thread of fragment host

rx.exceptions.OnErrorNotImplementedException: Must be called from main thread of fragment host异常提示:必须在主线程中执行异常描述:我在执行某个操作时出现的异常,类似跳转到首页等的页面跳转异常解决方案:创建一个线程,在创建的线程里面执行原来想要执行的代码,new 一个handler调用post发送消息

2016-11-28 11:36:53 9184 1

原创 android获取app当前的渠道号或者获取清单文件application中的任意meta-data(以友盟的多渠道打包为例)

android获取app当前的渠道号或者获取application中的任意meta-data(以友盟的多渠道打包为例)/** * 获取app当前的渠道号或application中指定的meta-data * * @return 如果没有获取成功(没有对应值,或者异常),则返回值为空 */public static String getAppMetaData(Context context,

2016-11-23 11:20:13 9615 4

原创 webview添加请求头

webview添加请求头//添加请求头 private Map<String, String> extraHeaders; extraHeaders = new HashMap<String, String>(); extraHeaders.put("device", "Android");//设备标识(前面是key,后面是value) extraHeaders.pu

2016-11-22 11:03:11 10514

原创 webview获取网页标题并展示、自定义(重写)网页的alert弹框

webView.setWebChromeClient(new WebChromeClient() {//获取网页的标题@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);setTitle(title);}//重写alert弹框@Over

2016-11-21 18:54:31 1396

原创 App强制更新时,点击进行下载的逻辑,分为调用原生浏览器下载和自定义显示进度条下载两种

方法一:点击后跳转到调用原生浏览器下载Uri uri = Uri.parse(upDataUrl);//直接调用原生的浏览器进行下载的方法Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);getActivity().finish();方法二:自定义的显示进度条下载(不依赖App本身的网络请求框架

2016-11-16 14:37:20 1785

原创 实现app的重启或重新打开

1.实现app的重启逻辑Intent i = context.getPackageManager() .getLaunchIntentForPackage(context.getPackageName());i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);context.startActivity(i);android.os.Process.kil

2016-11-16 11:53:39 2215

原创 EditText输入内容限制不以数字0开头

EditText.addTextChangeListener(mTextWatcher);//在一开始声明TextWatcher,在afterTextChange内操作private TextWatcher mTextWatcher=new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int

2016-11-08 19:52:54 3581

原创 简单介绍MVC、MVP和MVVM模式

说到这三个框架,应该说是所有做安卓开发的童鞋都会用到的,之前在github上看到一位大神写的相关的demo,觉得用的非常好,在此我介绍下我对这三个框架的理解:MVCMVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,当用户出发事件的时候,view层会发送指令到control

2016-08-30 17:23:12 627

原创 java中数据类型相关

java中数据类型相关面试中经常会被问到数据类型相关的内容,在这里简单总结下java中的数据类型:(1)分类基本类型:4类8种引用类型:类、接口、数组(2)基本类型整型: byte 1个字节 short 2个字节 int 4个字节 long 8个字节浮点型: float 4个字节 double 8个字节字符型: char 2个字节布尔型: boolean 不明确,可以认

2016-08-28 10:56:08 553

原创 Android安卓的四种点击事件

这里以点击按钮拨打电话为例:第一种:在Activity中自定义了一个OnClickListener的实现类;第二种:在button.setOnClickListener()方法中写一个内部类;第三种:让Activity实现OnClickListener接口,实现onClick方法;第四种:在布局文件中,给按钮设置onClick属性,然后在Activity中写方法(public vo

2016-08-26 16:56:15 1130

原创 关于安卓工程目录的介绍(src目录,res目录下drawable、mipmap、values等)

主要介绍安卓的工程目录,写给刚接触安卓的童鞋进行交流,大牛勿喷。。src:源文件;gen:开发工具自动生成的文件,不允许修改,R.java;libs:第三发方jar包,如android-support-v4.jar;assets:资产目录,音频文件,视频文件,把文件原封不动的打包到apk文件中;AndroidManifest.xml:Android软件的启动文件;r

2016-08-26 13:51:50 5414 4

原创 安卓怎样获取当前项目中默认的字体大小?

在安卓开发的过程中我们通常会需要用到默认的字体大小,但是怎样获取当前字体大小可能部分同学却不是很清楚,个人使用的是:TextView tv = new TextView(context);Toast.makeText(context,"默认字体大小为:"+tv.getTextSize()/density,Toast.LENGTH_LONG).show();(注:float densit...

2016-08-26 11:44:54 3754

用户头像设置demo

几乎所有app个人中心都会用到的用户头像的设置,可以拍照也可以从相册进行选择,很稳定也很实用,支持dialog的自定义。

2016-08-29

适用于所有view的上拉刷新下拉加载

几乎支持所有的view的上拉刷新和下拉加载,是一个完整个demo,包括listview、gridview等常用的控件都已经实现。

2016-02-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除