android路
文章平均质量分 53
trebleZ
只比你努力一点的人 其实已经甩你很远
展开
-
自定义View简介
文章目录onMeasure()实操:ScrollView + ListView 会显示不全问题onDraw()onTouch()自定义属性onMeasure()// 获取宽高的模式int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec);// 获取宽高的值 int widthSize = MeasureSpec.getSize(wi原创 2020-07-26 23:11:15 · 1160 阅读 · 0 评论 -
umeng推送客户端没收到
前言这边app组想把推送统一下,聚合推送选择了umeng,一切准备就绪,demo都正常运行,但是真正接入入app时,死活收不到推送,排查了下服务端,没问题。后续用控制台测试模式也无法接收到,基本问题定位在app端了。问题定位这个要从之前的app优化说起,自从功能越来越多后,我们的app也变成了一个多进程的应用,所以做了如下优化 /** * 判断是否是主进程 * * @return */ public boolean isAppMainProcess()原创 2020-06-15 22:34:59 · 392 阅读 · 0 评论 -
okhttp3x java.lang.nosuchmethoderror: no static method create
项目中一直使用的okhttp版本是3.x的版本,这次在某个module中使用了4.x的okhttp后,运行报错。java.lang.nosuchmethoderror: no static method create(ljava/lang/string;lokhttp3/mediatype;)lokhttp3/requestbody; in class lokhttp3/requestbody; or its super classes (declaration of ‘okhttp3.requestbo原创 2020-06-14 22:49:24 · 3014 阅读 · 2 评论 -
迁移AndroidX的坑
1.近期项目做了AndroidX的迁移,发现其中还是有些坑点的。注意,不需要提前添加任何配置这边提前吃了个螃蟹,提前加了开启配置后预编译,然后再去启动第二步的时候,发现AndroidX未被完全覆盖,需要手动修改。。。mmp#表示当前项目启用 androidxandroid.enableJetifier=true#表示迁移依赖包到androidx,如果不启用在使用依赖包中的内容时可能会出现问...原创 2019-10-29 19:47:35 · 974 阅读 · 0 评论 -
Android奔溃日志行数不对应
1.项目迁移到androidx后出现了奔溃日志行数不对应的问题,在日常开发中,甚是难受,问题定位比较麻烦。一番google后发现了解决方案https://stackoverflow.com/questions/52525155/crashlitycs-reporting-wrong-line-number-after-kotlin-migration2.原因:迁移androidx必须升级grad...原创 2019-10-29 19:40:02 · 1248 阅读 · 0 评论 -
FragmentPagerAdapter强制刷新
今天遇到一个问题,就是在一个act中嵌套了viewpager,点击头部,会替换数据,然后刷新下面的viewpager所有的数据。我心里一想,不是也是FragmentPagerAdapter,然后一想应该有notifyDataSetChanged()方法,搞了下,确实有。但是不刷新数据,打断点也不重新执行fragment中的生命周期。心想应该是有复用机制了,无法强制刷新。度娘了下,确实是有的。一、原因转载 2017-04-13 14:23:43 · 5380 阅读 · 0 评论 -
通过chrome来查看sqlite数据库
sqlite的是android内置的一个轻量级的数据库。同时在日常开发中可以作为数据缓存、终端简单逻辑处理的首选。可以说是数据持久化操作以及(CURD)增删查改的不二选择。但是比较头疼的是sqlite无法实时查看,一次次import处理用可视化工具查看显然是不可取的。这里记录下使用facebook的一个依赖库于谷歌流浪器相结合,进行类似于web调试的查看sqlite的实时查看方式。服气一、as中添加原创 2017-04-14 10:59:40 · 13181 阅读 · 4 评论 -
android集成微信支付
这里分享下android端集成微信支付的步骤。一、首先到官网https://open.weixin.qq.com/创建一个应用,审核说是7天内。通过后获取AppID就可以进行愉快的开发了。二、基本步骤就是移动端拼接好后天需要的购物车信息,后台返回随机验证码以及第三方的商家号,生成订单。然后我们再通过随机验证码以及第三方的商家号,确认支付信息,获取微信支付需要的一些参数,进行支付就可以了。然后会有一个原创 2017-05-03 16:40:35 · 1076 阅读 · 0 评论 -
litepal的使用记录
郭霖大神的litepal还是很方便的。这里记录下我容易忘记的方法api一、基本配置使用方法1、添加依赖compile 'org.litepal.android:core:1.5.1'2、在asserts文件夹下建立litepal.xml并配置<?xml version="1.0" encoding="utf-8"?><litepal> <dbname value="dbname" />原创 2017-05-03 17:02:37 · 695 阅读 · 0 评论 -
ExpandableListView无法展开
ExpandableListView的收缩功能还是比较常见的。所以就使用了,然而要的效果是不要这个组左侧的图标+在右侧图标显示收起还是放下。原因,主要是组的布局采用了checkbox控件导致的,只要在组布局控件加两个属性( android:clickable=”false” android:focusable=”false”)就可以了。<?xml version="1.0" encoding="u原创 2017-04-22 15:32:07 · 1266 阅读 · 0 评论 -
使用cavans绘制小日历(未来15天)
这里分享一个使用canvans绘制小日历的demo。主要的思路就是由于只要显示接下来的15天时间,并增加点击时间。所以想到了,使用cavans的绘制,当然使用gridview的item的显示或者隐藏也是可以的。由于项目需要的只是未来15天的绘制,所以没有做过多的拓展。比如拓展成日历啥的。看效果图: 一、分析 首先我们会想到绘制星期一到星期天这1行7列的数据。然后根据当前时间,推算出明天是星期原创 2017-03-16 10:09:16 · 1209 阅读 · 0 评论 -
PulltorefreshRecycleview拓展(pulltorefresh库)
因为项目中引用了pulltorefresh的库。这个库的历史有点久远。。。12年的库。。。献上它的库https://github.com/chrisbanes/Android-PullToRefresh。这里比较蛋疼的是不支持recycleview了。。。so,github一把,搜到了这个改进的拓展库。https://github.com/chrisbanes/Android-PullToRefre原创 2017-04-01 11:06:38 · 783 阅读 · 0 评论 -
为什么fragment使用hide()和show()而不使用replace()
在项目中fragmen的使用已经非常常见了。但是往往图方便用的是replace的方法进行的。方便是方便,但是replace是一个替换的过程,意思是remove掉当前的fragment,重新初始化一个new fragment进行替换,会重复完全执行新的fragment的生命周期。The new fragment to place in the container.官方文档解释说:replace()这个原创 2017-03-24 16:30:54 · 6641 阅读 · 0 评论 -
Android项目集成信鸽推送
记录下集成腾讯信鸽推送的步骤要领。给自己做个笔记: 创建应用: http://xg.qq.com/xg/apps/ctr_app/get_app_info?app_id=21002549611、应该很容易到这一步。然后需要添加测试设备,添加它的token。 这里可以通过log日志获取或者过debug调试获取到token。然后你就集成完毕了 XGPushManager.registerPush原创 2017-03-23 11:41:27 · 1555 阅读 · 0 评论 -
android中EditText文本监听
今天记录一个监听EditText的文本监听。主要的效果就是如果edittext中有文本,那么对应的button可用,且显示颜色,若无文本,则显示灰色,button不可用。然而后台的erp感太重,所以会存在一个界面中监听多个edittext的情况,然后一个button的亮起或灰度。一、一个界面中仅有一个EditText的监听(addTextChangedListener)//监听输入框原创 2017-04-08 10:07:20 · 3463 阅读 · 0 评论 -
picasso指定缓存路径
1、okhttp指定picasso的缓存路径 Picasso picasso = new Picasso.Builder(this)//.memoryCache(new LruCache(20 << 20)) //20*(2^20)=20*1024*1024 缓存内存大小 .downloader(new OkHttpDownloader(cacheFile))//图片存放位置原创 2017-03-20 14:54:50 · 1385 阅读 · 0 评论 -
Android开发相关的Blog推荐
鸿洋:http://blog.csdn.net/lmj623565791爱哥:http://blog.csdn.net/aigestudio老罗:http://blog.csdn.net/luoshengyang小巫:http://blog.csdn.net/wwj_748Mr.Simple:http://blog.csdn.net/bboyfeiyu任玉刚:http://blog.csdn.net转载 2017-03-03 16:34:11 · 472 阅读 · 0 评论 -
android post传递数组类型数据给后台php
这里分享一个android端传递数组给后台php的方式。后台要我传递的是一个二维数组,如下图。$data['Car']=array( "2_100" => array( "c1" => '2', "c2" => 0, "i" => '100', "c" => '00', "q&原创 2018-05-19 22:12:42 · 4257 阅读 · 2 评论 -
android版本号
android { compileSdkVersion 24 buildToolsVersion "24.0.3" defaultConfig { applicationId "com.coofond.carservices" minSdkVersion 17 targetSdkVersion 24 versio原创 2017-05-29 16:39:47 · 539 阅读 · 0 评论 -
GreenDao无法生成xxxDao
我这边遇到一个问题,就是从公司svn拷贝过来的项目,一般情况下是不提交greendao目录中的gen目录的东西的,因为会自动生成。但是运行后发现指定目录下的gen目录不会自动生成。心情down到极点,一片爆红…解决方式(曲线救国): 那么我们换种思路,也就是说我们指定的目录下无法生成这个gen文件夹目录,那么我们去掉这个默认指定的目录,是否会在默认文件夹下生成这个gen目录呢,答案是...原创 2018-08-03 09:35:15 · 4673 阅读 · 1 评论 -
Android面试总结
以前都是看别人写面试经验,这次我也想写一次面试总结。说起这个很是惭愧,开发android有两年多的经验了,但是总感觉后知后觉,市场不断在变化。给我的感觉就是,15-16的时候出来只要你懂activity生命周期,会绑定数据,懂listview的复用机制,handler消息机制,事件分发机制,那么基本就能找到一份不错的工作,明显有变化的是17年,开始要懂得会用一些第三方的库,懂得基本的原理,然...原创 2018-08-11 18:04:23 · 535 阅读 · 2 评论 -
ClickableSpan的简单使用
这里记录下ClickableSpan的使用。需要的效果是如下图 废话不多说,直接上代码。1.需要复写一个ClickableSpan的方法,这里可以自己定义效果package com.jmsht.taijixian.ui.message;import android.content.Context;import android.text.TextPaint;import and...原创 2018-07-04 10:30:56 · 6262 阅读 · 2 评论 -
Android全局改变字体大小(坑)
这边分享一个功能需求,全局改变字体大小。当下的情景比较蛋疼…一个祖传的项目,需要在半路添加这个需求,各种字体大小已经写明在xml里面了,dp,sp,甚至xp不等。当时内心是拒绝的,但是由于用户反馈实在要做,而且app面向的用户为老年用户居多,还是决定踩坑了。这里也善意提醒大家,凡事留一线,日后好给自己留活路。所以,我进入了漫长的百度或者是google…正确的姿势勉强将就的姿势(成功...原创 2018-06-28 17:37:46 · 16879 阅读 · 14 评论 -
ViewPager设置切换动画PageTransformer
这里记录下viewpager中的切换之间的渐变以及间距的动画 1、设置间距并展示多个页面边缘 主要是这个属性android:clipChildren=”false”表示的意思是: clipChild用来定义他的子控件是否要在他应有的边界内进行绘制。 默认情况下,clipChild被设置为true。 也就是不允许进行扩展绘制。那么我们设置这个ViewPager的父布局的android:cli...原创 2018-06-29 23:00:47 · 2293 阅读 · 1 评论 -
android开发笔记汇总(二)
有一段时间没有写博客了。一直想写,但是都被自己打败了,这里分享下这段时间遇到的bug之类的东西。adapter中的sort方法。。。 会自动生成两个基本对象,前面的是后一个对象,后面的是前一个对象,进行比较。一般是返回-1 0 1三个参数。。。负整数 0 正整数 0表示等于 1表示大于 -1表示小于吧dialog show之前要判断activity是否已经销毁。因为网络请求是异步请求,...原创 2018-04-19 22:16:57 · 827 阅读 · 2 评论 -
android开发笔记汇总(一)
1、long类型转换为int类型: 一、强制类型转换long ll = 300000; int ii = (int)ll; 二、调用intValue()方法long ll = 300000; int ii= new Long(ll).intValue(); 三、先把long转换成字符串String,然后在转行成Integerlong ll = 300000; int ii = Integ原创 2017-10-03 21:19:20 · 562 阅读 · 0 评论 -
activity启动黑屏的解决方案
这边做了一个修改字体大小的功能,跳转出来后需要重启主页,但是总是会黑屏,一步步排查后发现是主页启动的时候就是会黑屏,主要是oncreate和onresume中做了太多的动作,导致setcontntview的姿势久了一些,这也是android中预加载的机制。原创 2017-09-30 19:55:48 · 2675 阅读 · 0 评论 -
8月总结
眼看着博客再8月份要断片了。心里才幡然醒悟,这段时间彻底不再安逸了,我换了一个工作,刚好今天满3个月了,提了转正。所以还是特地来水一篇,记录下这段时间的点点滴滴。当然也是希望能给自己一点压力,好好迎接接下来的挑战。一、加班我是拒绝的真的,一开始来到这个公司,我心里想的每一分钟都是逃避,哎呀,为毛公司有了7个android还要我过来顶包,为毛还不给我svn账户给我看看源码,为毛还是没有任务,为毛下班了原创 2017-08-31 22:35:06 · 1371 阅读 · 1 评论 -
sharesdk分享到指定平台
sharesdk很容易集成社会化分享。但是一般都是直接弹出popupwindow进行选择分享,集成请看集成sharesdk分享短信第三方登录等 这里要记录下如何进行分享到指定平台,是在集成环境的基础下的。首先一点要初始化 ShareSDK.initSDK(this);//初始化社会化分享 private static final int原创 2017-07-08 15:27:51 · 1232 阅读 · 0 评论 -
MediaPlayer实现音乐文件的边下边播
这边的需求是仅仅是实现一个音乐的边下边播。思路就是截取后台返回的音乐链接。然后截取文件名,判断该文件是否在文件夹下存在。存在就使用sd卡的文件源进行播放,不存在就下载这个音乐文件,并且播放这个音乐链接。使用的是android自带的DownloadManager进行下载。默认是带标题栏的下载进度显示的,我们需要隐藏掉需要在清单文件下面进行配置, 需要权限隐藏 <uses-permission and原创 2017-07-08 15:17:57 · 2863 阅读 · 0 评论 -
时分秒倒计时有暂停功能
今天需要实现的是一个时分秒的倒计时功能。本来之前写过类似限时抢购的功能,想直接引用过来,发现还是不好复用,需要再加深理解下。使用CountDownTimer实现倒计时的功能,主要的逻辑就是“/”和“%”的道道。比较优雅好理解。。。原创 2017-06-20 19:27:55 · 2037 阅读 · 0 评论 -
android studio中所有的import报红
今天在打开android studio后。多打开了几个项目。。。后面项目就出现了import所有的项目都报红的可怕错误。重启as无果,清理项目后rebuild也无果。。。我靠几乎绝望。后面度到了解决方案,就是清理as的缓存,做个记录,好可怕。。。解决方法入下图:原创 2017-02-28 15:30:43 · 5204 阅读 · 1 评论 -
Android使用cavans绘制饼图
项目中需要实现一个一级佣金以及二级佣金的比例示意图。看下设计稿 一、分析一开始分析的是,先绘制完圆环,然后再去找到各自圆环的中心点,进行做切线,做中垂线出来绘制折线,然后绘制佣金比例以及显示。后面发现这么计算太麻烦了。索性就定死那个两个折线图以及比例显示。大概的思路如下图。会进行一系列简化。1、简化点,把折线显示部分设置成了固定,然后圆环在动。 2、因为我们使用canvas绘制圆环或者圆的时候,原创 2017-02-28 11:55:19 · 1650 阅读 · 0 评论 -
使用CountDownTimer实现倒计时广告
一般app的首页跳入会显示还有X秒跳过广告。使用CountDownTimer(定时器)可以轻松实现。还有一个问题就是广告图片加载过程中发现当前图片更换了,采用的是首次加载图片如果更换了图片,首先不切换图片,否则用户体验不好,先下载到本地,也就是每次获取图片资源会优先选择本地文件夹中的图片,如果不存在,就使用drawable资源文件夹中的图片先,如果服务端存在图片,下载到本地。会有一个延迟的效果。。。原创 2016-07-07 14:19:28 · 1217 阅读 · 0 评论 -
Textview指定长度显示省略号
TextView超过指定字符长度显示省略号的属性 android:maxEms=”15” //是指15个中文字符的长度,如果是英文,那就显示30个 android:ellipsize=”end” //省略号显示在结尾<TextView android:id="@+id/tv_realtitle" android:layout_width="wrap_co原创 2016-07-06 16:39:37 · 946 阅读 · 0 评论 -
自定义Dialog中点击EditText无法弹出软键盘的问题
今天遇到一个狗血的bug。就是我自定义一个dialog。。。前面自定义的时候都是没有EditText的,就是仅仅做个提示框。然后要做一个带有EditText的dialog。。。欧克,也很顺利,在Genymotion上跑地也很欢快。。。但是真机上一试,发现无法弹出系统自带的键盘了。。。获取不到焦点啊,奔溃1、打开Genymotion上面自带的系统软键盘 首先你要打开Oracle VM Virtual原创 2016-07-06 16:31:45 · 3608 阅读 · 0 评论 -
NetworkOnMainThreadException
别人的坑都要跳一跳。一直听网上说android只有一个UI主线程,不能再UI主线程做耗时操作。。。我也知道,但是。。。言归正传NetworkOnMainThreadException:网络请求在MainThread中产生的异常Class Overview The exception that is thrown when an application attempts to perform a n原创 2016-07-06 14:59:16 · 1108 阅读 · 1 评论 -
Android自定义适配器Adapter浅析
在android日常开发中,我们用到最多的就是加载数据,尤其是适配器,Adapter是连接后端数据和前端显示的适配器接口。如下图直观的表达了Data、Adapter、View三者的关系: 1、我刚刚接触android的时候的做法常常是使用Android自带的simpleAdapter,simpleAdapter的扩展性好,以listview为例子。常规的做法会在主布局写一个listview,然后你原创 2016-07-06 11:31:20 · 834 阅读 · 0 评论 -
浅析android事件分发机制
我觉得android中的事件分发机制的懵懂期应该是Listview中对于item的点击和长按事件,那个时候知道item的长按事件是返回boolean值的方法,我们知道要把那个false改成true。。。这样我们长按事件结束后就不会再继续触发点击事件了一、引言1、关于listview中的item点击事件以及item长按事件的引入(本来是想跟onClick事件一起的,然后就发现一个问题了):Don’t原创 2016-07-27 12:45:28 · 1403 阅读 · 0 评论 -
使用ViewPager实现帖子列表
今天要提取的效果是,使用ViewPager简单实现帖子列表的功能。看起来还是比较炫酷的。。。但是使用的是v4包中的ViewPager啦。整体功能效果就是利用ViewPager左右拖动的效果,在头部使用RadioGroup单选框进行页面的区分。主页面整体使用FrameLayout,因为要由一个悬浮图标发表帖子。大概的需求还有搜索框的隐藏还有显示,要求无论在哪个页面,要跳回全部的页面下进行搜索。效果还是原创 2016-07-14 14:32:01 · 3200 阅读 · 5 评论