Android
Mr丶D
这个作者很懒,什么都没留下…
展开
-
RecyclerView问题:java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adap
写在前面在使用RecyclerView中出现了一个问题,如下图 解决办法:我们在使用RecycxlerView时,通常先回设置一个LayoutManager 我们的问题出现在LayoutManager的onLayoutChildren方法中,我们只要在onLayoutChildren中捕获这个异常即可,下面我以LinearLayoutManager为例。先写一个类LinearL...原创 2018-07-16 14:50:47 · 1772 阅读 · 1 评论 -
Android设备拍照详解
清单文件中的配置利用Android设备拍照,首先需要在清单文件中有如下配置<manifest ... > <uses-feature android:name="android.hardware.camera" android:required="true" /> ...</manifest>在你的应用中,有拍照功能,但是不严格要求用户手机必须有原创 2017-07-07 15:43:57 · 344 阅读 · 0 评论 -
Android文件存储全攻略
一个File对象可用于读写大量的数据,比如,它可以用来保存图片和从网络获取到的数据。选择内部(Internal)或外部(External)存储所有的Android设备都有俩个文件存储位置,“内部(Internal)”和“外部(External)”。Internal storage(内部存储)使用介绍:一直存在,随时可以使用。存储在此处的文件默认只能被你的App获取。当用户卸载当前的App,系统原创 2017-07-06 18:10:18 · 473 阅读 · 0 评论 -
RecyclerView的item根布局中的Layout_xxx属性不起作用
问题:我们在使用RecyclerView的过程中,发现在item的根不具中设置一些Layout_XXX属性,没有起到作用,比如layout_width=”match_parent”。下面是我的RecyclerView的item的布局文件<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:ap原创 2017-07-06 10:54:07 · 2036 阅读 · 0 评论 -
适配Android N (7.0)需要解决的问题汇总
java.lang.SecurityException: MODE_WORLD_READABLE no longer supported异常的原因与解决MODE_WORLD_READABLE文件权限存在安全隐患,所以谷歌先把它标为过时。然后完全的移除掉。 MODE_WORLD_READABLE在Android M之前都是能用的,但是在Android N,使用它会抛出****SecurityE原创 2017-06-27 16:50:45 · 7602 阅读 · 0 评论 -
ScrollView与其子控件事件冲突的解决,以及怎样去禁止ScrollView的惯性滑动
Bug情景说明需求是界面中展示一个条目列表,条目最上面是一张图片,下拉后,图片由模糊变清晰,最后我选用了用ScrollView去解决,以下是最终界面 这是用一个ScrollView来做的: 问题1:ScrollView与其子控件之间的触摸事件冲突的决绝ScrollView与其子控件事件冲突的解决,当我给下面的条目加点击事件后,在条目上面向下拖动ScrollView时,没有效果,也就是说Scro原创 2017-06-14 22:08:22 · 4324 阅读 · 0 评论 -
ListView拓展-下拉刷新,顶部图片放大效果
效果图:实现思路:因为是ListView的基本功能上进行拓展,所以首先需要继承ListView。 然后给ListView添加HeadView,HeadView的布局中是一个ImageView 在ImageView中放入一张比ImageView大的图片, 重写ListView的overScrollBy()方法,下拉过程中,通过获取下拉的手滑动的距离,逐渐增加ImageView的高度值, 重写o原创 2017-06-11 17:56:29 · 551 阅读 · 0 评论 -
从源码理解Handler
Handler的简单回顾我们都知道,Android中更新ui界面都需要在主线程中的完成,如果在子线程中更新ui会导致程序崩溃,但是如果在子线程中获取到了数据,需要吧数据展示到界面上,此时我们怎么来解决呢,我们很自然想到了Handler, 首先在ui线程创建一个Handler对象,然后在子线程中创建一个Message对象,借助的ui线程创建的Handler发送出去,最后在Handler的handler原创 2017-05-23 18:29:09 · 366 阅读 · 0 评论 -
应用打包签名出现Conversion to Dalvik format failed with error 1
Conversion to Dalvik format failed异常解决在Android应用打包签名时,如果出现了Conversion to Dalvik format failed with error 1异常:如下图 解决: 在导航栏Project下拉框中去掉Build Automatically再签名打包,打包成功可后,再勾上即可。如下图 验证Apk文件是否签名成功在命令行中,键原创 2017-02-09 22:20:22 · 544 阅读 · 0 评论 -
Android5.0中特性的介绍
了解Material Design概念:融合卡片式,立体式的设计风格,强调层次感,动画,阴影等元素 国内翻译介绍 官网介绍(需要翻墙) Android UI样式风格发展:2.3版本(黄色丑陋版)->4.0(Holo)->5.0(MaterialDesign)动态替换ThemeMaterialTheme配色方案修改状态栏,ActionBar,界面背景,NavigationBar的颜色。让Act原创 2017-01-15 14:22:46 · 569 阅读 · 0 评论 -
Android中如何让Service不被一键清理且在息屏后保活
MarsDaemon库的使用及其出现的问题的解决最近碰到这么一个需求,就是从服务器获取一个时间,每天在这个时间提醒用户,所以首先需要创建一个服务,让它能够长期运行在后台,且不被手机管理软件杀死,但是在Android5.0以后,什么守护进程啊等等方法都失效,后来在github上发现了一个据说可以让Service不死的库,支持到api23, https://github.com/Marswin/M原创 2016-12-29 23:18:55 · 10332 阅读 · 11 评论 -
Android Studio中添加jar包和原生.so文件
添加jar包和.os文件方式1先把.so文件和jar包放到项目目录下的lib文件夹下,然后在你的module的build.gradle中的加入如下代码 // 在清单文件中添加如下代码,主要是告诉编译器,jni文件在哪个目录下 sourceSets{ main{ jniLibs.srcDirs=['libs'] } }方式2原创 2016-12-29 22:25:45 · 841 阅读 · 0 评论 -
Android中的手势识别
用户对手机的触摸可以延伸出很多的手势,下图为Android中手势图在Android项目中,如果要自己写Touch事件来开发手势,难度很大,Android提供了手势识别器来 帮助开发者来快发 ,则对于手势的开发变的非常简单。如下代码是针对于安卓中的滑动手势开发GestureDetector mGestureDetector = null;............{ ......原创 2016-10-05 18:15:14 · 915 阅读 · 0 评论 -
Android如何高效的加载图片(1)---加载大尺寸图片
完美的去加载bitamap,不但可以增加用户体验度,还能避免内存溢出。加载bitmap,一部小心就会导致应用crash.报出下面的异常。java.lang.OutofMemoryError: bitmap size exceeds VM budget.如果需要加载图片比较大。很容易造成内存溢出,如何去防止内存溢出呢。读取bitmap的尺寸和类型BitmapFactory类提供了很多decoding方原创 2017-07-11 11:50:56 · 1293 阅读 · 0 评论 -
Android如何高效的加载图片(2)---在ui线程中处理Bitmaps
前面我们总结了Androd中如何去加载尺寸比较大的图片。现在我们需要考虑的问题是当我们从磁盘或者网络中加载图片时,由于磁盘的读取速度或者网速的原因导致话费很长的时间去加载。如果吧这些耗时的代码放在ui线程,会导致ANR异常。 所以。这篇文章中,我们将讨论使用AsyncTask在后台线程中去加载图片,并且最后将会教你如果处理并发问题。使用AsyncTaskAsyncTask类提供了一些的方法在后台线原创 2017-07-11 16:20:55 · 1693 阅读 · 2 评论 -
Android程序制作自己Log日志收集系统
写在前面在我们的代码中,通常会用try{}catch来捕获能够预料到的一些异常,但是,通常情况下, 我们的代码都会出现无法预料到异常信息,我们怎样去捕获到这些异常,并上传到自己的服务器来分析修bug呢?UncaughtExceptionHandler接口Java为我们提供了一个机制,用来捕获并处理在一个线程对象中抛出的未检测异常,以避免程序终止。我们可以通过UncaughtExce...原创 2018-04-27 11:23:11 · 5588 阅读 · 0 评论 -
Fragment实现懒加载(草稿)
/** * * 实现懒加载的Fragment */public abstract class BaseLazyFragment extends Fragment { protected View mRootView; protected Context mContext; protected boolean isVisible; private boole原创 2018-02-01 15:47:35 · 188 阅读 · 0 评论 -
Dagger2高级使用(自定义Scope、SubComponent、Lazy与Provider)
自定义Scope我们知道component的dependencies与component自身的scope不能相同,即组件之间的scope不同 意思就是当我们写了一个componentA,同时通过dependencies引用了另一个componentB 如下面代码所示@Component(modules = AModule.class,dependencies = ComponentB.原创 2018-01-24 16:25:44 · 1413 阅读 · 0 评论 -
Dagger2 的模块化实现 以及常见问题总结
简述当我们在项目中使用Dagger2的时候,如果某个类 需要在项目的很多地方被引用到,比如UserInfo这个类,那么我们需要为它单独创建一个Module,来提供UserInfo的实例对象,代码描述下面的这个类UserManager的构造方法中,需要传入UserInfo这个类实例对象, 而UserInfo就是我们需要在全局使用的类,它需要一个单独的Module来提供其实例对象。原创 2018-01-23 11:24:54 · 729 阅读 · 1 评论 -
Android使用ttf字体库替代替图片
写在前面我们知道Android中,有各种不同尺寸的屏幕,所以,就需要多套UI图片来进行手机的适配,这样,又会造成apk过大,所以,所以,使用字体文件来替换掉UI图片也属于APK瘦身的一种方式,本篇文章将介绍字体图标库的使用。SVG图片获取阿里巴巴提供了一个图标库Iconfont,我们可以去这里下载自己需要图标,当然也可以找ui妹子做一套。 我在里面随便下载了一些图片,下载完成后,原创 2018-01-16 17:59:21 · 5271 阅读 · 0 评论 -
Android中使用SVG矢量图
写在前面Google在Android 5.X中提供了两个新API来帮助支持SVG:VectorDrawableAnimatedVectorDrawable什么是SVG:SVG (Scalable Vector Graphics, 可伸缩矢量图形) 是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML原创 2018-01-16 16:30:00 · 4329 阅读 · 0 评论 -
方法数超过65536,DexIndexOverflowException的解决
异常概述在项目中,遇到这样一个问题,程序直接编译运行到模拟器上没问题,但是在打包签名时,提示失败,然后报下面的异常 解决方式首相在module的gradle中配置compile 'com.android.support:multidex:1.0.1'android { compileSdkVersion 24 buildToolsVersion "25.0.3" defau原创 2017-11-23 10:08:19 · 433 阅读 · 0 评论 -
Android自定义控件 - View的绘制
概述在现实生活中,如果我们要去画一个图形,必须先知道他的大小和位置,同样,在Android中,在绘制一个View前,也必须要先去测量将要绘制的View的大小,这个测量过程在onMeasure()方法中进行。MeasureSpec类Android系统给我们提供了一个强大的类MeasureSpec,通过这个类,可以帮助我们测量测量View,MeasureSpec是一个32位的int值,其中高2位代表测量原创 2017-07-26 09:35:44 · 427 阅读 · 0 评论 -
Genymotion模拟器连接不上本地tomcat的解决方法
当我们启动tomcat,在本地浏览器访问http://localhost:8080/,可以得到正确访问到tomcat主页。 但是,但我们在Genymotion模拟器中的浏览器中输入http://10.0.2.2:8080/去访问tomcat主页时,却不能访问到。 解决方法我们打开模拟器网络配置,选择修改网络 在弹出的窗口中,选择高级选项,将无 改为手动 然后窗口继续被展开,在展开的列表中,设原创 2017-07-20 09:57:29 · 626 阅读 · 1 评论 -
Activity界面启动和结束动画(仿微信界面切换效果)
如何给界面设置切换动画通常,我们可以通过overridePendingTransition(int enterAnim, int exitAnim)来给Activity设置界面切换效果,但是,这个方法如果要做Activity界面移出屏幕的动画,则必须要先finish掉Activity界面。所以显得的很局限,这里不作具体阐述了。我们来看下面这个方式: 以下我仿照微信启动和结束界面动画写的效原创 2017-07-19 10:01:29 · 9018 阅读 · 7 评论 -
Android如何高效的加载图片(4)--- 图片占用内存的管理
我们在做完图片的缓存后,还需要做一些具体的操作来帮助垃圾回收和图片的复用。 不同的版本有不同的方式,在本篇文章中,主要针对Android 3.0及以上版本进行详细介绍。在Android2.3.3及以下版本中内存的管理在在Android2.3.3及以下版本中,用recycle() 方法帮助垃圾回收图片, 如果有大量图片,很容易导致OOM,调用了recycle()方法后,图片会尽快的被作为垃圾回收。注原创 2017-07-13 17:32:42 · 510 阅读 · 0 评论 -
Android如何高效的加载图片(3)--- 图片的缓存
如果我们要不止一次去加载很多的图片,像在ListView、GridView、ViewPager等控件中加载图片。本篇将为大家介绍怎样在在内存和磁盘中缓存图片。内存缓存(Memory Cache)内存缓存可以让我们快速的访问图片,我们通常使用LruCache类来进行内存缓存,它可以将一个最近应用的对象,保存到一个强引用的LinkedHashMap中,并且当内存不够的时候,及时的去释放掉最近使用的对象。原创 2017-07-13 16:26:21 · 542 阅读 · 0 评论 -
Android中的事件分发传递机制
Android中的事件传递机制参照如下的布局来说明Android的事件传递机制 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width原创 2016-10-04 17:41:01 · 383 阅读 · 0 评论