
Android
文章平均质量分 67
Kenway090704
坚持不懈
展开
-
Android 自定义View基础(一)
该博客主要时记录简单的自定义的View的使用:学习Android的童鞋都知道,View这是最基本也是最重要的部分,在开发过程中,我们会创建许多需要实现特定功能的控件,这时我们就需要自己来实现自定义的控件。首先,我们的控件需要继承自View和ViewGroup,当然也可以继承自Button,LinearLayout,该文章从最基础的讲起,就继承自View.画圆圈首先我们,实现一个控件,画出一圆。 代码原创 2017-03-08 14:41:14 · 437 阅读 · 0 评论 -
Android 自定义View基础(二)
接着上一篇《Android 自定义View基础(一)》,这一篇我们真正的来实现一个文字自定义控件:自定义控件的步骤:自定义属性在自定义View的构造函数获取属性onMesure()onDraw()1.自定义属性在res/values/下创建一个attrs.xml文件,然后在创建需要的属性 代码如下:<?xml version="1.0" encoding="utf-8"?><resourc原创 2017-03-09 12:48:57 · 427 阅读 · 0 评论 -
Android LayoutInflater加载.xml文件原理分析
Android LayoutInflater 的原理分析以下文章是在拜读guolin大神的文章后,自己进行的一个总结。 原文: http://blog.youkuaiyun.com/guolin_blog/article/details/12921889接触原创 2017-03-06 19:04:44 · 2236 阅读 · 0 评论 -
Android 中数据存储(File,SharedPreference,SqliteDatabase)
对于数据存储,android提供了三种方式:FileSharedPreferenceSqliteDatabaseFile(文件存储)文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中,因而它比较适合存储一些简单的文本数据或者二进制数据。对于复杂数据,不适合使用该存储方式。接下来介绍一下File存储的使用方式。save通过openFileOutput()来获取一个原创 2017-03-27 19:02:20 · 567 阅读 · 0 评论 -
Android Fragment生命周期及各个方法使用
在Android开发中,我们都少不了使用Fragment,一直在使用,但是没有很详细的理解过具体生命周期的回调,这段时间比较闲,特定写一下总结:就像activity一样,fragment也有它们自己的生命周期,而且fragment必须是依存于Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期,()1.onAttach(context)作用:fragment原创 2017-03-23 13:04:52 · 2216 阅读 · 0 评论 -
Android 自定义View基础(三)--ViewGroup
本文主要是实现类似于ScrollView的一个控件,代码相当简单:自定义ViewGroup通常需要重写onMeasure()来对子View进行测量,重写onLayout方法来确定子View的位置。重写onTouchEvent()方法增加响应事件。我们实现的ViewGroup可以实现ScrollView所具有的上下滑动功能,但是在滑动的过程中,增加一个粘性的效果,即当一个子View向上滑动大于一定距离原创 2017-03-13 18:10:12 · 449 阅读 · 0 评论 -
Android 自定义View基础(四)--ListView
这篇文章主要是总结ListView的使用:首先来说说ListView,几乎所有的app都在使用listview,所以熟练使用ListView是作为Android移动开发必不可少的。AdapterViewHoldersetEnpty()自动隐藏,显示的ListView聊天界面的ListViewAdapter对于ListView而言,Adapter就是“弹夹”,給ListView添加数据和视原创 2017-03-14 19:00:41 · 500 阅读 · 0 评论 -
Android 数据存储之SQLiteDatabase
上一篇文章总结了文件存储和SharedPreference两种存储方式,我们知道这两种存储方式都只适合存储数据结构简单的数据,当我们需要存储类似表格数据时,Android 内置的SQLiteDatabase就派上了用场:SQlite的基础使用SQLite的最佳实践SQlite的基础使用创建数据库升级数据库添加数据更新数据删除数据查询数据创建数据库在创建数据之前,我们需要学习一个类原创 2017-03-30 18:10:42 · 492 阅读 · 0 评论 -
Android 适配不同屏幕(手机,平板)
如果程序能够根据设备的分辨率或者屏幕的大小在运行时来决定加载那个布局,那我们发挥的空间就更多了。因此本节我们就来探讨Android中动态加载布局,限定符的使用:layout-largelayout-sw600dplayout-large为了同时适配手机和平板。 我们在res/目录下创建,layout-large的package,然后我们可以创建一个与layout下相同的activity_ma原创 2017-03-23 17:16:07 · 4093 阅读 · 0 评论 -
Android 自定义View基础(五)--DragView
接着前面几篇文章,我们这篇文章实现拖动控件的效果:实现如上的效果有以下几种方法:layout()offsetLeftAndRight(dx)和offsetTopAndBottom(dy)LayoutParamsscrollTo和scrollBy首先实现这样的一个效果,我们需要重写控件DragView继承自View,然后在控件中监听手势动作,就是需要重写onTouchEvent();原创 2017-03-15 19:02:18 · 939 阅读 · 0 评论 -
Android 自定义View基础(六)--ViewDragHelper(侧滑栏)
我们知道在Google在support的库中为我们提供了DrawerLayout和SlidingPanelLayout两个布局来实现侧滑栏的效果,这两个布局让我们实现侧滑的功能变的非常容易,其实这两个布局在内部,都有一个ViewDragHelper类,通过ViewDragHelper类基本可以实现各种不同的滑动,拖放需求:本文主要是讲述这个类,通过实现一个简单的例子来讲解,当滑动距离大于某个值的时候原创 2017-03-16 17:15:07 · 856 阅读 · 0 评论 -
Android 动画总结(补间动画,属性动画)
在开发中,为了提升用户体验,我们会添加很多动画效果,以前一直在使用,但是从来没有总结一下,最近工作轻松,所以总结一下这个方面:这里主要是补间动画(Animation),属性动画(Animator)两类。补间动画(Animation)属性动画(Animator)动画实例补间动画(Animation)透明动画 AlphaAnimation alphaAnimation = new Alph原创 2017-03-16 17:48:24 · 441 阅读 · 0 评论 -
Android 去除自带标题栏
( 使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效)使用requestWindowFeature(Window.FEATURE_NO_TITLE)隐藏标题栏失效的原因,可能是activity继承的是AppCompatActivity。下面详细介绍了使用方法::一、如果创建的activity继承了Activity:第一种:入门的时候经常使用的转载 2017-04-12 10:39:24 · 360 阅读 · 0 评论 -
Android app开发中的比较麻烦的坑(一)
在开发中发现有许许多多的坑,每次解决后都没有记录,时间一长,这些坑再次出现的时候,发现突然忘了怎么解决的了,所以用一篇文章记录一下这些,开发中遇到的坑:开启时白屏代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键开启时慢或白屏有时候,你在打开一个app的时候会发现,你点击了这个app的图标,打开之后会出现一段时间的白转载 2017-04-01 14:56:27 · 1169 阅读 · 0 评论 -
使用Android Studio 导出jar包
如何使用Android Studio来打包导出jar包原创 2017-03-10 11:54:36 · 584 阅读 · 0 评论 -
Mac中对android apk进行反编译(apktool dex2jar jd-gui)
参考文章: http://blog.youkuaiyun.com/krubo1/article/details/51791535一、准备工作工具准备:1.apktool2.dex2jar3.jd-gui下载地址:点我安装工具apktool安装下载后解压文件,进入到apltool-1.5.2 for mac文件夹中,可以看到apktool,apktool.jar和apt三个文件,将这三个文件拷贝到/usr/lo转载 2017-04-13 14:31:48 · 1805 阅读 · 0 评论 -
Android 四大组件之Service 5.0版本
Service 5.0版本与以前版本启动隐式意图的不同5.0以前隐式启动Intent serviceIntent=new Intent(); serviceIntent.setAction("com.android.ForegroundService");startService(serviceIntent);5.0以后 Intent serviceIntent=new Intent(); ser原创 2017-04-17 14:40:54 · 474 阅读 · 0 评论 -
Android 项目如何获取MD5和SHA1
在使用第三方登录,分享等,可能需要用到项目的MD5/SHA1签名,特地记录一下如何获取:Android Studio 打包签名:http://blog.youkuaiyun.com/itcatface/article/details/50015701通过.keystore/.jsk.apkandroid studio通过.keystore/.jsk当程序签名打包后,会存在一个.keystore(Ecli原创 2017-05-27 11:47:12 · 1248 阅读 · 0 评论 -
Android QQ授权时 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
最近在开发项目的时候发现,授权登录QQ,可以获取Openid,但是无法获取用户信息,报错如下,原因现在还未查明,如果有小伙伴知道的话,请留言告知,本人也在查询解决中:E/openSDK_LOG.HttpUtils: OpenApi requestAsync IOException原创 2017-06-28 15:40:02 · 671 阅读 · 0 评论 -
Android ListView
ListView作为android的经常使用的控件,在使用时,经常会忘记一些使用要点,这里记录一下一些使用过程中的需求,以便后面使用查询:设置监听使用使用过程中可能出现的问题设置去掉分割线 1.设置Android:divider="@null" 2.android:divider="#00000000" 3..setDividerHeight(0)高度设为0原创 2017-06-29 12:44:40 · 252 阅读 · 0 评论 -
android TabLayout+ViewPager有较多Tab,Tab随viewPager滚动
先上效果图这里只需要在xml中TabLayout下添加app:tabMode="scrollable",即可实现ViewPager与TabLayout进行联动 <android.support.design.widget.TabLayout android:id="@+id/sign_tablayout" android:layout_width="match原创 2017-06-30 11:12:31 · 660 阅读 · 0 评论 -
Android 两行代码实现修改状态栏与标题栏颜色相同
现如今许多app,在设计的时候都是,将标题栏和状态栏使用同一颜色,查询网上很多中设置状态栏的方法,都需要写很多代码;还得进行版本判断,在项目的build.gradle中声明以下依赖:compile 'com.githang:status-bar-compat:0.3'在你的BaseActivity中(最好是setContentView()被调用之后)添加以下代码:StatusBarCompat.s原创 2017-06-30 16:23:24 · 1465 阅读 · 0 评论 -
Android 逐帧动画OOM的解决方法
项目中都会使用到动画,有时候会使用到逐帧动画,然后当帧数较多时,就会发生OOM的问题,网上有许多文字是提供一个工具类,解决这个方法。 关于这个工具类的使用的原文地址:http://blog.youkuaiyun.com/u014702999/article/details/50544455效果图: 这篇文章主要是换一种思路,如果我们只是需要动画每隔一段时间重复一次。那么我们仅使用gif图片进行展示就可以实现原创 2017-07-11 15:12:58 · 1140 阅读 · 0 评论 -
Android Json解析中如何解析没有key的解析办法
在Android 解析中,我们有时后会碰到没有键的{}中就是一个集合,这样咋一看,不知道如何解析,实际上是因为一直在使用Gson框架,使用熟练了,现在突然,不会解析了,网上查了一下,原来很简单的,在这个记录一下,方便以后使用,例如如下 的json字符串如何解析呢![ { "id":"1", "provinceid":"110000", "pro原创 2017-06-19 19:16:44 · 3022 阅读 · 0 评论 -
Android app中实现网络监听
创建BroadcastReceiverManifest中注册NetWorkUtil*ApplicationContexBroadcastReceiver首先创建一个BroadcastReceiver:public class NetWorkChangeBroadcasetReceiver extends BroadcastReceiver { @Override public原创 2017-07-04 18:11:45 · 1415 阅读 · 0 评论 -
Android 实现自定义的WheelView选择器
最近有项目中需要用到一个这个滚动轮,刚拿到原型一看,这不就是一个ListView么?但是当我用ListView写完后,我发现有问题, 1.ListView不会整条滚动, 2.无法准确的获取第一数据后来网上查找,发现有类似的控件,那么就不用自己实现了,直接使用。现在很多地方都用到了滚轮布局WheelView,比如在选择生日的时候,风格类似系统提供的DatePickerDialog,开源的控件也有很转载 2017-07-04 18:31:24 · 9967 阅读 · 0 评论 -
Android RecyclerView+StaggeredGridLayoutManager实现瀑布流图片闪烁问题
:瀑布流展示图片列表,但是没有给出图片大小比例,需要下载图片后计算出图片比例在设置Item高度,已经做了部分处理,但是还会出现Item位置乱动在刷新时出现图片闪烁。已使用网上的部分解决方案: 1. layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE); 2. mRecyclerView.add原创 2017-07-04 18:48:20 · 2839 阅读 · 0 评论 -
Android A problem was found with the configuration of task ':app:packageRelease'
打包提示这个错误。Error:A problem was found with the configuration of task ‘:app:packageRelease’. 想了一下才发现是添加了一个属性. 在gradle里面添加了这个属性。shrinkResources true.打包的时候会去删除一些不必要 的文件,结果就打包失败了。 现在先将这个功能原创 2017-07-14 11:35:53 · 856 阅读 · 0 评论 -
Android adb安装apk时提示Invalid APK file
今天在使用adb命令安装apk时,无法安装成功,进入到android sdk 下的platform_tools下也是无法安装成功:先贴一下我的调用过程xu:~ xiaokai$ adb devicesList of devices attached0123456789ABCDEF devicexu:~ xiaokai$ adb shellshell@T36DH_CM3:/ $ pm in原创 2017-07-05 17:19:21 · 13085 阅读 · 0 评论 -
Android RecyclerView+StaggerLayoutManager实现瀑布流单选item乱跳
排查原因解决方法排查原因通过排查原因,是因为我再使用刷新指定Item时出现了这个问题, recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollState原创 2017-07-06 12:15:54 · 1747 阅读 · 1 评论 -
Android 中TabLayout实现Tab自定义和选中文字加粗
在Android开发当中,我们几乎都得用到TabLayout+Fragment来实现信息的展示,但是,很多时候我们的需要又很不同,TabLayout的基本使用推荐以下文章:http://www.jianshu.com/p/2b2bb6be83a8需求一:自定义TabLayout中Tab的布局这里我们使用到是不同与TabLayout的默认布局,这样的话,需要什么样的样式都可以自己实现。 1原创 2017-07-06 14:38:33 · 4242 阅读 · 0 评论 -
Android 项目实例config.gradle配置
开发android的攻城师,没有不接触gradle的吧,但是对于新人来说,这个地方的配置是一个噩梦,因为这里配错一点,就可以会app出现红叉,无法编译,这个很头痛,最近工作不是特别忙,特意整理一下。初始化的build.gradleconfig.gradle初始化的build.gradle当初始创建project,会默认生成项目:build.gradle、setting.gradle,还有就是a原创 2017-08-08 19:05:15 · 7212 阅读 · 2 评论 -
Android 使用gradle的productFlavors实现多渠道打包
productFlavors用法productFlavors ,就是用来分别定义产品不同的特性,使用它可以使用一套代码创建不同的产品。就是用于定义产品的特性,这是每个产品不同的地方,有了它我们就可以用同一套代码创建不同的产品,在module下的build.gradle中加入productFlavors结构如下:apply plugin: 'com.android.application'andro原创 2017-08-09 11:30:20 · 1471 阅读 · 0 评论 -
Android 使用grade实现Android 项目debug版与release版共存
在Android 项目中,默认debug版与release版的包名相同,从而导致debug版与release版两者不能共存。为了方便开发,可以通过gradle实现让两者在一台手机上共存原文地址:http://blog.youkuaiyun.com/lj402159806/article/details/54955431配置app目录下的build.gradle文件android { ......转载 2017-08-09 15:15:01 · 1511 阅读 · 0 评论 -
Android 生成Release版本时,混淆问题的解决
今天在生成release版本的apk时,出现了编译失败,百度以后,发现是混淆配置出现错误Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.sq原创 2017-08-03 17:54:13 · 4981 阅读 · 0 评论 -
Android 使用gradle批量修改生成的apk文件名
在一次性打十几个渠道包的时候,如果我们想让打包完生成的apk文件名按照我们想要的格式来命名,比如明确的apk的版本号,打包日前,那个渠道的包等,这时就需要使用gradle的Variants属性来动态修改生成的apk文件名在app(module) 目录下的build.gradle文件内加入如下代码:def buildTime() { def date = new Date() def转载 2017-08-11 14:44:27 · 718 阅读 · 0 评论 -
Android ViewPager+RecyclerView+StaggerLayoutManager瀑布流图片单选实现
最近公司有需求实现一个签到功能,是ViewPager+RecyclerView+StaggerLayoutManager实现,其中有许多问题,经过查询资料和一遍遍测试,最后功能实现了,特别记录一下这个实现过程:如何实现单选代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键先上效果图:如何实现单选因为我这里的存在多个R原创 2017-06-29 19:41:24 · 2300 阅读 · 1 评论 -
Android 项目实例用到的gradle配置技巧
关于grade基本配置,前面已经有四篇文章了,1. Android 项目实例config.gradle配置2.使用gradle的productFlavors实现Android项目多渠道打包 3.使用gradle实现Android项目debug版与release版共存 4.使用gradle实现批量修改生成的apk文件名 完整Android项目grade配置:项目根目录config.gradle(原创 2017-08-11 15:11:14 · 474 阅读 · 0 评论 -
Android app开发过程中LogUtils
该LogUtils,可以包括输出log的方法名,在类中的第几行,及该类的包名。在调用的时候log前面会有具体的参数信息,找到log位置更便捷。import android.text.TextUtils;import android.util.Log;/** * 对于Android系统Log输出日志的封装LogUtils * 1 可修改LogUtils中的LEVEL值觉得哪些级别的日志可以输出原创 2017-08-04 17:02:12 · 696 阅读 · 0 评论 -
Android Proguard-rules.pro中常用的混淆配置
每次在最后生成正式版的apk时,都会出现混淆配置错误的情况,这篇文章专门整理一下常用混淆配置,(可能个别因版本存在差异):四大组件等Parcelable,Serializable序列化类WebViewLaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键四大组件###########################################原创 2017-08-03 18:23:31 · 2498 阅读 · 0 评论