![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
moble_xie
IT路上的点点滴滴(大数据,移动开发)
展开
-
常用的android工具类和库
这篇博客主要记录我认为比较有用的android开源框架或者工具,我会持续添加,推荐给大家 1、这里面包含了很多的工具类,包括数据校验工具类,文件操作工具类,汉字转拼音工具类等。 https://github.com/jingle1267/android-utils 2、CWAC,这里面包含不少android开发中具有普遍用途的库 https://commonsware.com/cwac 3原创 2016-01-31 10:35:53 · 1555 阅读 · 1 评论 -
android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
在android开发的布局中,国内大量的使用底部菜单,这个本来不符合android的规范,我个人是深恶痛绝的,但是产品是这样设计的,也只能是这样做了。在这篇博客中,我将结合网上的资料以及自己的使用经验来实现一个底部菜单,解决了很多网友提出的各种问题,在文章中,我只贴出部分的实现代码以及效果图,免得占用大量的篇幅,让大家看的不爽,在最后我会给出整个demo的源码!!!底部菜单的设计一般来说,底部菜单是原创 2016-01-27 16:30:50 · 20765 阅读 · 11 评论 -
android适配器SimpleCursorAdapter的使用以及最后一个参数的作用
在android开发中,我们经常用SimpleCursorAdapter来绑定数据库里面的数据,很多人在使用这个类的时候并不知道具体怎么样来用,或者说还有很多疑问,比如最后一个参数该怎么写,这个cursor什么时候关闭,是怎么管理cursor的等等。 在android的不同的版本中,对SimpleCursorAdapter的使用方法是不同的,我们先来看下SimpleCursorAdapter构造方原创 2016-01-28 18:44:11 · 17989 阅读 · 3 评论 -
SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示
随着android5.0的发布,google还发布了SwipeRefreshLayout,RecyclerView,CardView几个有用的控件,今天我写这篇博客记录下我的使用过程,内容包括正在刷新加载,下拉刷新,上拉加载更多,无数据的提示信息的显示,也希望给这方面有疑惑的一点帮助!!!首先当然是添加对这些控件的依赖,由于我使用的是android studio,这个很简单,添加如下的代码在b原创 2016-01-26 20:07:10 · 14874 阅读 · 5 评论 -
在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内
在lbs开发中,可能要碰到这样的问题,如何判断一个指定的经纬度点是否落在一个多边形区域内,比如我在地图上画了一个多边形区域,然后给出一个经纬度点,怎样判断这个点是否在这个多边形范围之内,由于我用的是android平台上的高德地图,官网找了很久都没有找到,貌似是没有这个方法,如果有哪位发现了,请给我留言。但是在百度地图的api上我发现了有这个方法来判断,http://wiki.lbsyun.baid原创 2016-01-25 13:10:21 · 11540 阅读 · 14 评论 -
RecyclerView Bug:IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter的解决方案
RecyclerView是android-support-v7-21版本中新增的一个Widget,RecyclerView在刷新刷新数据的时候会出现以下异常:java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{431a7450原创 2016-01-18 17:31:54 · 40739 阅读 · 44 评论 -
Android中minSdkVersion、targetSdkVersion、maxSdkVersion的作用
在AndroidManifest.xml中,有uses-sdk这样一个节点,有三个属性分别是:android:minSdkVersion,android:targetSdkVersion,android:maxSdkVersion但是大家未必全知道是什么意思,网上也没说清楚,现在根据我的开发给大家梳理一下这点知识:android:minSdkVersion:指明应用程序运行所需的最小API l原创 2015-09-24 15:17:12 · 7542 阅读 · 0 评论 -
android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决
在android5.0中,新增了Material Design设计语言,确实挺炫的,使用Toolbar代替了之前的Actionbar确实灵活很多。之前我们只能在application或者activity中使用theme主题,但是在android 5.0中可以给View使用theme主题,这个View及其子View都会使用这个theme,给了我们设计一个很大的灵活性。给View添加theme原创 2015-10-06 14:35:11 · 33706 阅读 · 7 评论 -
在版本低于android21下使用material progressbar风格的进度条
在版本低于android21下使用material progressbar风格的进度条在android 5.0以上的版本,我们使用material design风格的设计,进度条progressbar效果如下:没有找到录制gif动态图的工具,暂时用静态的吧!实现的代码如下:<ProgressBar style="@android:style/Widget.Material.Light.Pro原创 2015-09-16 00:48:22 · 8733 阅读 · 0 评论 -
使用Zxing生成二维码,以及保存到sdcard,图片变黑的问题
在app中,经常有生成识别二维码的功能,我们一般是使用zxing这个开源库来实现。使用zxing生成Bitmap的代码如下:/** * 生成二维码图片 * @param text 二维码文本 * @return */ public static Bitmap createQrBitmap(String text,int qrWidth,int qrHeight) {原创 2015-08-17 10:58:36 · 4263 阅读 · 2 评论 -
使用android不能分享资源的问题
在android中我们分享图片使用如下的代码: Intent intent=new Intent(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_SUBJECT, "分享"); intent.putExtra(Intent原创 2015-08-17 11:07:22 · 1587 阅读 · 0 评论 -
Unable to instantiate fragment make sure class name exists, is public, and has an empty constructor
Unable to instantiate fragment make sure class name exists, is public, and has an empty constructor that is public原创 2015-05-31 15:30:44 · 5153 阅读 · 0 评论 -
android中使用static、application、本地存取数据的问题
在android开发中,我们经常使用在类中使用static存取数据,但是这有一个很大的问题,就是static变量存取的数据经常被回收,不像JavaSE,可能android的虚拟机的设计有所不同。比如我们把登陆的信息存在static的变量中,然后就无缘无故就发生了NullPointerException异常,这就很可能我们的用户信息被回收,所以用static变量存取数据在android开发中有一个很原创 2015-05-31 16:25:31 · 4612 阅读 · 3 评论 -
android使用inSampleSize、inScaled、inDensity、inTargetDensity对图片进行缩放
一般来说,在android中对图片进行缩放,我们使用以下的代码: public Bitmap resizeImage(Bitmap bitmap, int w, int h) { Bitmap BitmapOrg = bitmap; int width = BitmapOrg.getWidth(); int height = BitmapOrg.getHeight(); int原创 2015-05-04 23:27:46 · 7721 阅读 · 6 评论 -
ScrollView嵌套ListView,GridView,ViewPager,以及这些控件自动滚动到底部问题的解决
Google是不推荐在ScrollView 中放入一个可滚动的菜单的,比如放置一个ListView、GridView、ViewPager这些控件的,尽量不要让两者嵌套,但有时候还是有这个需求,先不管它合不合理。如果直接在ScrollView中嵌套只会出现一行,然后在其中滚动,这样不是很好,下面是我的整理,希望对大家有帮助,我也是从网上摘抄的,当然加入了一些我自己的东西。一、在ScrollVie原创 2015-04-21 18:09:38 · 17070 阅读 · 0 评论 -
我的Nexus4终于升级到了android5.1了
谷歌四儿子Nexus 4于2012年11月发布,到现在已经过去了两年半,我在Google宣布降价$100的时候,买了一部,虽然配置在当时不是最顶配的,但是能够第一时间升级到android最新系统,价格还比较低,还是蛮值得的,用到现在也没出什么大问题。今天点了一下系统更新,居然可以升级到android5.1,心里还是蛮激动的。下面贴两张图分享一下。大家是不是很羡慕啊,国内的手机几原创 2015-04-21 17:04:57 · 6209 阅读 · 0 评论 -
SQLite一条SQL语句插入多条记录失败的问题
在android开发中,有时候需要向SQLite数据库中一次性插入多条语句,比如有以下的语句:INSERT INTO `province` (`_id`, `code`, `name`) VALUES(1, 110000, '北京'),(2, 120000, '天津')这样的语句在android4.4.4和android4.2.2中可以,但是在android4.0.4中是不行的,说是有语法错误原创 2015-04-13 15:22:06 · 5467 阅读 · 0 评论 -
对android中事件的分发的理解
网上已经有很多对android中事件的分发的文章了,花了几天时间好好的整理了下这方面的知识,现在做一个总结,算是加深理解,能够给大家一点帮助是最后的了。 在android中涉及到事件处理的有一下几个地方: Activity中的public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(Motio原创 2016-01-29 17:25:13 · 537 阅读 · 0 评论 -
android中canvas.drawText参数的介绍以及绘制一个文本居中的案例
在自定义View中,会经常遇到canvas.drawText这个方法,很多新手都不明白这个方法参数的含义,经过我不断的Google和多次的测试,把我的经验写出来供大家参考,错误之处,欢迎大家给我留言,一起讨论。 首先,我们看下这个方法参数的含义:canvas.drawText(text, x, y, paint),第一个参数是我们需要绘制的文本,第三个参数是我们的画笔,这两个不用多说原创 2015-01-26 16:20:47 · 70765 阅读 · 18 评论 -
实现android轮播图的开源组件--Android-ConvenientBanner
今天给大家介绍个开源组件,无限循环的轮播图,Android-ConvenientBanner,在github上的地址为:https://github.com/saiwu-bigkoo/Android-ConvenientBanner,在首页做广告的时候用的非常多。 它的使用非常简单,项目的首页有非常详细的说明。我也在项目使用了这个组件,但是我发现了一个问题:把banner添加到recyclervi原创 2016-06-24 17:00:28 · 8742 阅读 · 1 评论 -
android中WebView的Java与JavaScript交互
android开发中经常使用WebView来加载网页,难免遇到Java与JavaScript的相互调用,记录下来,以便今后查阅。Java调用JavaScript方法这个很简单,只需一句代码:webView.loadUrl("javascript:bb('这是Java调用JavaScript的结果')");bb是html中的JavaScript的方法名,括号是参数。JavaScript调用Java方法原创 2016-05-26 17:34:25 · 1787 阅读 · 0 评论 -
android集成Umeng推送获取不到device_token也收不到消息,但是在Umeng后台可以看到设备的状态
在集成Umeng的过程中,都是根据Umeng的文档来集成的,使用Umeng提供的demo可以,但是集成到自己的项目中,却死活不行,昨天就遇到了这个问题,原来是环境的问题。 我说下我的问题发生的情况,之前我在android studio中新建了一个project,Umeng推送作为一个Module引入,当时的版本是2.7,现在Umeng推送已经升级到了2.8,我在Umeng后台新建项目使用的SDK是原创 2016-04-28 11:16:42 · 3626 阅读 · 0 评论 -
android报The content of the adapter has changed but ListView did not receive a notification的解决方案
在android开发中,ListView用的非常多,不管是新手还是多年的开发多年的老鸟,可能都会遇到这个异常:java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your原创 2016-03-14 00:15:48 · 1781 阅读 · 0 评论 -
android控件ListView顶部或者底部也显示分割线
在默认的android控件ListView在顶部是不显示分割线的,但是我们可以使用一些技巧来显示。我们先来看下默认情况下ListView显示的效果: 可以看到顶部是没有分割线的,但是有时候我们的美工硬是在上面画了一条分割线,没办法,我们也得加上,我们在ListView顶部加上一个Header就可以实现,代码如下listView.addHeaderView(new ViewStub(this))原创 2016-03-10 15:27:49 · 15382 阅读 · 0 评论 -
android绘图Paint.setAntiAlias()和Paint.setDither()方法的作用
在自定义View中,这两个Paint.setAntiAlias()和Paint.setDither()方法用的很多,都只有一个boolean值,作用大家未必清楚,今天抽了点时间研究下,终于搞清楚了,希望给大家点帮助!Paint.setAntiAlias()该方法作用是抗锯齿,什么意思呢,我们看下效果图,就知道了 左边是没有这只抗锯齿的,右边是设置了抗锯齿的,边界明显变模糊了。Paint.set原创 2016-02-24 17:01:21 · 60800 阅读 · 19 评论 -
Android不规则图形点击提示选中不同区域
在android开发中,点击不同的区域显示不同的提示,比如地图,我点击广东省就广东省区域高亮,人体图,点击头部区域,头部区域就高亮。这类应用的难点就是区域是不规则的,在网上也没有什么好的解决方案,有人提出个这个需求也没有人给出解决方案,比如下面这个帖子: http://bbs.csdn.net/topics/390597311 就是地图的应用,也没人给出解决方案。 google了很久,找出了一原创 2016-02-17 11:46:41 · 5580 阅读 · 1 评论 -
android绘图canvas.drawBitmap方法的作用
canvas.drawBitmap()有两个重载方法 和 第一个比较简单,我们着重看第二个 四个参数 Bitmap bitmap:要绘制的位图对象 Rect src: 是对图片进行裁截,若是空null则显示整个图片 RectF dst:是图片在Canvas画布中显示的区域 Paint paint:画笔,这个不用多说 主要是第二个参数不是很明白,对图片的裁剪,大家看下效果就知道原创 2016-02-23 19:18:08 · 36418 阅读 · 11 评论 -
在小米手机上,修改APP的launcher应用图标不生效的解决方案
在app开放中,当我们修改了app的launcher应用图标后,安装在小米系列的手机上,发现还是没改过来,折腾的好久,google了一天终于找到原因了,原来是在小米的开放平台上,需要自己上传完美图标,在小米手机上安装了app后,会去后台获取这个完美图标,代替我们在AndroidManifest.xml文件中application标签中的android:icon图标。我们只需要相应的更改完美图标就行了原创 2016-03-31 17:42:04 · 6736 阅读 · 1 评论 -
android中使用Notification打开详情界面activity,点击返回键和按钮返回主界面
经常有这样的情景,来了一个Notification了,点击这个Notification就打开了一个新的Activity,我们点击返回按钮或者返回键就返回了app的主界面。网易新闻就是一个最好的例子。 目前有两种解决方案: Android实现点击通知栏后,先启动应用再打开目标Activity Android中使用Notification并通过点击Notification启动启动通知详细Activ原创 2016-02-20 02:34:54 · 8631 阅读 · 3 评论 -
android studio常用的快捷键
alt+f8 debug时选中查看值f8 单步调试,一步一步走shift+f8 跳出当前方法f7 进入某个方法,与shift+f8相对f9 程序继续运行,直到下一个断点,没有断点就直接运行下去原创 2016-02-19 11:16:34 · 593 阅读 · 0 评论 -
android绘图canvas.clipRect()方法的作用
该方法用于裁剪画布,也就是设置画布的显示区域 调用clipRect()方法后,只会显示被裁剪的区域,之外的区域将不会显示 该方法最后有一个参数Region.Op,表示与之前区域的区域间运算种类,如果没有这个参数,则默认为Region.Op.INTERSECT 这几个参数的意义为:DIFFERENCE是第一次不同于第二次的部分显示出来 REPLACE是显示第二次的 REVERSE_DIFF原创 2016-02-19 15:50:47 · 38824 阅读 · 1 评论 -
android中对save()和restore()两个方法的理解
android开发中,我对save()和restore()两个方法,一直不是很明白,这几天有点空,仔细研究了这方面相关的知识,略有感悟,记录下来,以便查阅。 我们知道,canvas画布的原点在屏幕的左上角,以向右为X轴的正方向,以向下为y轴的正方向,如下图所示 图片是盗取别人博客的,希望不会被认为侵权,底部我会加上参考的博客链接。 我们使用canvas.drawXXX方法默认是以左上角为原原创 2016-02-18 00:09:44 · 5715 阅读 · 3 评论 -
android中对Canvas.drawCircle()方法的理解
功能说明该方法用于在画布上绘制圆形,通过指定圆形圆心的坐标和半径来实现。该方法是绘制圆形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆形。基本语法public void drawCircle (float cx, float cy, float radius, Paint paint)参数说明cx:圆心的x坐标。cy:圆心的y坐标。radius:圆的半径。paint:绘制时所使用原创 2016-02-17 17:30:06 · 40621 阅读 · 0 评论 -
android绘图Paint.setXfermode()和Canvas.saveLayer()方法的作用
在android绘图开发中,Paint.setXfermode()和Canvas.saveLayer()是两个重要的方法了。很多网友都不是很明白,我也一直不明白,花了几天时间来研究了这两个方法,略有领悟,记录下来,归纳总结,也给新手一点帮助。 Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解 这篇文章给了我很大的帮助,我的很多内容也是来自于这篇文章,并把我原创 2016-03-01 22:36:01 · 6844 阅读 · 3 评论 -
android中对View的onMeasure()方法的理解
在android开发中,很多人对自定义View是望而生畏,我也一样,但这又是向高级进阶的必经之路,主要是对View里面的很多方法不知道怎么理解,其中一个就是onMeasure()方法,网上有很多这样解释说明,可能是由于我的领悟力有限,一直没能搞明白,今天有点空,好好研究一下,并记录下来,也希望对大家有所帮助。 首先,我自定义一个MyView,继承于View,onMeasure()方法不做处理,直接原创 2016-01-31 15:44:13 · 32453 阅读 · 12 评论 -
使用Application Crash Reports for Android(ACRA)捕获Application Crash的异常信息
在开发android的过程如果报错,可以在logcat上看到错误信息,但是在发布以后,由于用户的手机环境,平台版本各不相同,即使发生了停止运行,给用户很坏的体验,我们也不知道。基于此,我们就需要Application Crash Reports for Android(ACRA)这个开源库,这个库能够上传异常堆栈信息到服务器,方面我们找出app问题的存在,然后相应解决问题,从而提高用户体验。原创 2015-04-10 18:39:43 · 4246 阅读 · 0 评论 -
android通过快捷方式打开一个网页
有时候我们需要app在桌面生成一个快捷方式,通过这个快捷方式可以打开一个网页,方法如下: public void addShortcut(Parcelable icon, String name, Uri uri) { Intent intentAddShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");原创 2015-03-24 00:20:44 · 7461 阅读 · 4 评论 -
通过打开android应用市场来定位你的app
在我们自己开发的app中,往往要打开android market,比如很多的app都有评分的功能,需要打开一个android market,我们要打开某个app,但是这个app并没有安装在客户的手机上,我们就需要打开一个android market定位到这个app,以便让客户下载。通过Java包名直接定位到你的App:http://market.android.com/details?id原创 2015-03-23 21:23:17 · 7532 阅读 · 0 评论 -
对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解
setHomeButtonEnabled这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.原创 2013-08-15 01:16:39 · 96844 阅读 · 9 评论 -
“Invalid layout of preloaded class”问题解决
fatal error: Invalid layout of preloaded class1 AnswerIn case of an Android project, you have to remove Android Lib from the launch configuration for that specific class. Use the "walk转载 2013-08-25 23:26:55 · 7386 阅读 · 3 评论