9月 262017
 

公司项目迁移到android studio上已经有一段时间,之前光是配置android studio就花了一些时间——因为公司内网环境不能访问外网(内心吐槽过无数次了……工作本不能上外网给我们做开发的带来很多问题,唉……)……
本文主要想总结一下android studio在离线环境下如何配置。
jdk/android sdk的下载、配置再次不再赘述。 Continue reading »

4月 182017
 

如题,这个问题说起来略囧 o(╯□╰)o,调用系统拍照功能直接一个Intent搞定,谁曾想测试阶段发现部分机型拍照完成后自己加了一个旋转图片的操作,本来自己写的一个拍照截图控件用着好好的,有了这个旋转操作后显示效果自然不是我想要的。
原因找到了,解决问题其实挺简单,由于系统在拍照完成、生产图片的过程中会将一些参数写入到图片、形成EXIF信息,如果android系统对图片进行了旋转操作,那一般在EXIF中会保存着旋转角度这样的信息。那么,我们拿到图片后,可以读取这个EXIF,再旋转一次,将图片转过来即可。因此有了如下代码: Continue reading »

1月 242017
 

之前工作时遇到的问题,趁着春节工作压力不大,总结一下。
声明:本文部分代码取自Android开发之获取相册照片和获取拍照照片 并做了修改
1、从相册或是文件管理器获取
在android中从本地获取图片(不管是相册或是文件系统),调用如下Intent即可: Continue reading »

1月 122017
 

平时工作经常需要编译不同的android测试包,对这种重复劳动着实无感,趁着这几天工作不是很忙,尝试部署了jenkins来自动编译,下面记录一下过程(以下主要讨论在windows环境下的操作)。

第一步

使用ant编译android项目。如果是使用eclipse开发android,应该对ADT打包速度颇为无语,使用ant的速度要快很多。第一步要做的就是保证ant能够正常build项目,这样后面jenkins就可以启动一个ant编译任务进行android打包。ant编译android项目需要做如下工作: Continue reading »

12月 222016
 

打算整理一下最近两年做android所学到的东西,代码、文章配套整理一下,但是发现自己其实研究的还很肤浅,写出东西还是没人家写的明白,so,索性直接转发吧,主要是为了日后查起来方便,代码打出一份方便日后搬砖。
下面文章转自:Android中SQLite应用详解 相关代码参见:https://github.com/evasnowind/PrayerUtility/
————华丽的分割线————
上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。 Continue reading »

12月 202016
 

工作中遇到“判断android手机的rom是哪一个版本”这样的问题,搜到如下解决方案,具体出自哪里不确定(网上转载太多,也没标注出处……),我是在这里看到的:http://mojijs.com/2015/10/211671/index.html 代码复制下来即可用,我已经验证过,O(∩_∩)O~
Continue reading »

8月 252016
 

要实现可拖动的九宫格,网上搜了下,搜到比较靠谱的是这个版本,原理、实现都写的很清楚,但有个问题,用到GridView时,写adapter时一般都会使用ViewHolder的方式,即adapter使用BaseAdapter,adapter中保存数据,而调用getView方法时,若是第一次调用则将可复用的数据保存到一个ViewHolder类中,后续就不用再重新创建View;或者,adapter中每次根据数据创建view。
由于公司所用的客户端框架限制,我在实现可拖动的九宫格时,在getView方法中,拿到的数据就是一个个已经创建好的View对象,但按照上面提到的xiaanming的拖动实现方式,我将这些已有的View对象在getView中返回、加入到GridView后,发现显示没问题,但是拖动之后,View的显示顺序会乱掉,而且会出现第一次点击某个View时对应回调方法没有响应,但第二次点击时则会响应第一次点击、第二次点击两个回调方法。
为解决这问题,在github上发现如下可拖动九宫格的另一种实现,尝试重写adapter类后解决了该问题,发现这个跟stableid有关。我一开始写的adapter大概样子如下; Continue reading »

8月 242016
 

app上线前遇到一个很诡异的问题,同一款型号的手机,一台手机没问题,另一台手机则在显示首页后假死、然后直接闪退。经过排查,确定是自定义GridView惹的祸,异常信息如下:

 java.lang.IllegalArgumentException: parameter must be a descendant of this view
 at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5353)
 at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5282)
 at android.view.ViewGroup$ViewLocationHolder.init(ViewGroup.java:7755)
 at android.view.ViewGroup$ViewLocationHolder.obtain(ViewGroup.java:7689)
 at android.view.ViewGroup$ChildListForAccessibility.init(ViewGroup.java:7624)
 at android.view.ViewGroup$ChildListForAccessibility.obtain(ViewGroup.java:7592)
 at android.view.ViewGroup.addChildrenForAccessibility(ViewGroup.java:1927)
 at android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal(ViewGroup.java:2982)
 at android.widget.AdapterView.onInitializeAccessibilityNodeInfoInternal(AdapterView.java:983)
 at android.widget.AbsListView.onInitializeAccessibilityNodeInfoInternal(AbsListView.java:1509)
 at android.widget.GridView.onInitializeAccessibilityNodeInfoInternal(GridView.java:2361)
 at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6151)
 at android.view.View.createAccessibilityNodeInfoInternal(View.java:6110)
 at android.view.View.createAccessibilityNodeInfo(View.java:6095)
 at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
 at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
 at android.view.View.onInitializeAccessibilityEventInternal(View.java:6047)
 at android.widget.AdapterView.onInitializeAccessibilityEventInternal(AdapterView.java:994)
 at android.view.View.onInitializeAccessibilityEvent(View.java:6035)
 at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5896)
 at android.view.View.sendAccessibilityEventUnchecked(View.java:5881)
 at android.view.View$SendViewStateChangedAccessibilityEvent.run(View.java:22468)
 at android.os.Handler.handleCallback(Handler.java:743)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:150)
 at android.app.ActivityThread.main(ActivityThread.java:5546)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

Continue reading »

5月 252016
 

首先说明下,本帖主要是为了给出思路,不会给出特别细的教学代码,详细的API使用网上搜就好了。
先给出一个对于webview的帖子:有关webview中js与java互调的帖子
javascript调用java
也就是说通过webview所访问的web站点,希望通过js调用android本身的接口实现某些功能。这种情况下可以用webview控件的addJavascriptInterface接口注册一个js接口,然后web站点中调用这个接口即可,可以参考这个例子:传送门 Continue reading »