Android学习
文章平均质量分 66
汤姆加菲猫
喜欢造轮子的Android开发者
展开
-
“高大上”的位运算
经常看面试题发现有一个问题很多次出现,那就是如何交换两个变量的值,而且不借助中间变量,比较大众的方法就是加减乘除法。 a=a+b; b=a-b; a=a-b; 或者是 a=a*b; b=a/b; a=a/b; 两个方法都可以得到正确答案但是前者对于浮点数精度会有损失,后者得保证b不为0。 学习位运算后,用异或原创 2015-02-05 18:43:27 · 508 阅读 · 1 评论 -
android中判断service是否已经启动
在写一款音乐播放器时,发现如果不判断service是否启动,每次进入本地歌曲的界面时由于重新加载就会造成重复startService的现象,后台播放的歌曲就会停止,所以我们需要先判断如果service已经启动,那么便不启动服务。 查资料后发现android中已经封装了一个获取正在运行的activity和service的类:ActivityManagerActivityManager原创 2015-06-09 01:45:18 · 9618 阅读 · 1 评论 -
Android中对json数据的解析
如今json数据在网络开发中作为传输数据的使用已经超过了xml格式的应用。json数据的格式比较简单,易于解析,另外占用带宽小。 一般解析json数据的方法有两种,一个是运用android的SDK下面自带的包进行解析,一个是运用第三方的包进行解析,比如google出的Gson,还有阿里出的FastJson,其他的不赘述。 比如对于下面一个json数据的解析:{"Name" :原创 2015-05-25 21:43:11 · 424 阅读 · 0 评论 -
Android之activity加载模式
Android的activity在AndroidManifest中有一个属性android:launchMode,里面有4个加载模式,分别是:standard,singleTop,singleTask,singleInstance。 1.standard模式 standard即标准,如果在AndroidManifest中没有设置则默认为standard,同一个activity在原创 2015-07-07 21:05:08 · 539 阅读 · 0 评论 -
Android之activity与application生命周期
理解Android中activity,application甚至是service的生命周期是很重要的,能更好的了解一个程序在各种情况下运行的过程,然后编写出更高效和健壮的程序出来。 还是上图比较直接明了,我把activity,application中比较重要的方法都添加了Log,看看调用顺序是怎么的。 首先是程序启动可以看出首先是application的oncreate原创 2015-07-09 12:04:58 · 5311 阅读 · 1 评论 -
移动GIS作业之onActivityResult使用
先上效果图目的就是点输入起点时,跳转到一个新的页面,然后选择地点后结果回传这时就能用到startActivityForResult方法以及onActivityResult方法,首先在左边的页面的类中实现这个方法@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {原创 2015-07-12 18:23:31 · 483 阅读 · 0 评论 -
Android中fragment切换状态
最近写一个地图的app,用到了fragment来进行切换,其中有fragment中显示的是地图,但是发现在切换过程中每次地图会重新加载,实际上就是fragment的重新创建,用户体验不好,而且很耗费流量。 经过查找发现fragment除了replace方法之外还有两个方法show,hide可以解决这个问题。 private void replaceFragment(Frag原创 2015-06-25 22:40:44 · 1063 阅读 · 0 评论 -
Android之Fragment的嵌套布局
在3.0后的版本,android推出了fragment,极大的增强了布局的灵活性。有时候可能项目需求需要在一个FrameLayout中嵌套另一个FrameLayout。先来分析红色Fragment中嵌套绿色Fragment,android中在继承fragment的类中多了几个方法,其中一个是getChildFragmentManager() 当然也有getParentFragment(原创 2015-06-09 23:03:40 · 3062 阅读 · 0 评论 -
移动GIS作业之调用百度api接口时请求中文参数url
做兴趣点搜索的时候用到了百度apistore中的api,原创 2015-07-12 20:34:36 · 1856 阅读 · 0 评论 -
Android获取屏幕宽度和高度
在上一篇的仿知乎进度条中,因为在调用ondraw前getwidth方法返回的是0,所以我直接将width设为1080了,而且为了保证一开始的滑块位置的正确性,在初始化线程的时候加入了delay,这样让onDraw先调用,缺点就在于体验不好以及屏幕的适配问题,今天偶然看别人的源码时发现了可以获取屏幕高宽的方法,那么知乎进度条的问题就解决了。 DisplayMetrics displayM原创 2015-07-27 11:57:18 · 1008 阅读 · 0 评论 -
Android网络请求框架Volley的使用
Volley是Google在2013年推出的一款网络请求的框架,主要解决数据量小但是请求频繁的情况,对于大流量的比如文件上传下载,流媒体等则表现不佳。一般用于json获取,图片加载。 要想使用volley,首先需要jar包,jar包和源码下载地址:http://download.csdn.net/detail/u013926110/8895911 1.请求json数据1.1实例原创 2015-07-13 18:54:40 · 587 阅读 · 1 评论 -
Android事件总线框架Otto使用
Otto框架是square公司为Android出的一款事件总线框架,主要是为了解决大项目中耦合性过高的问题,比如涉及到多个类都需要响应某一个操作,原始的做法就是使用广播,事件产生者发送广播,事件订阅者接收广播,并作出相应的操作,但是这样在项目越来越大后,就越来越不好维护和扩展,所以我们引进Otto这款框架,类似的还有一个Event Bus,Otto相比后者优势主要是上手什么简单,缺点是性能上会原创 2015-08-13 12:25:16 · 5370 阅读 · 1 评论 -
android的自定义listview以及listview常用属性设置
ListView在绑定ArrayAdapter时,我们一般会这样写 ArrayAdapter adapter = new ArrayAdapter(context, android.R.layout.simple_expandable_list_item_1, objects); 第二个参数一般会使用系统的这个文件,在listview中我们能设置滚动条,间隔线,但是仍然不能满足原创 2015-06-07 00:24:37 · 956 阅读 · 0 评论 -
Android之4.4版本以上沉浸式状态栏实现
Android在4.4(KITKAT)版本加入了沉浸式,这个概念开始是在ios上使用的,现在ios的应用基本上都使用了沉浸式,而android只能在4.4及以上的版本进行使用。 先看看没有沉浸式的效果:可以看到顶部的状态栏和底部的导航栏的颜色与界面不搭配看起来比较突兀。 只需要在activity的oncreate方法中加入几行代码就能使状态栏和导航栏与界面融为一体原创 2015-05-11 00:03:03 · 1240 阅读 · 1 评论 -
Andorid实现Toast覆盖上一个文本
音乐播放器中用户在选择播放模式时,传统的toast会一个显示完之后才会显示下一个,用户在连续的点击之后,滞后性十分严重,影响用户体验。 所以必须及时的响应用户的点击事件,于是我们想到只用一个全局Toast对象,判断toast对象,如果存在就直接更改Toast的值就好了,下面是一个简易的选择播放模式的demo,用户每次点击图片时,会切换图片,并及时用Toast显示相应模式。publ原创 2015-05-10 00:45:19 · 2504 阅读 · 2 评论 -
Android自定义adapter优化之ViewHolder
一般我们在写自定义adapter时,一般会继承BaseAdapter,其中会重写一个方法就是getView,让我们先看一下这个重写的方法刚出来的时候的参数。 @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub原创 2015-02-07 23:52:16 · 2059 阅读 · 0 评论 -
Android中Parcelable的使用
最近做一个需要service和activity进程通信的应用,在传递对象时需要将对象序列化,这里选择的是Android自带的Parcelable类,还有一个序列化的类是jdk的Serializable,相比较而言后者较为简单只需要实现接口就行,但是Parcelable的效率更高,只不过不能在将数据存储在磁盘中时使用,因为不能保证数据的准确性。 用Parcelable序列化需要一系列步骤原创 2015-02-24 18:55:55 · 762 阅读 · 0 评论 -
Android内存管理之道
声明:本篇文章是转载的开源中国的一篇博客,原帖地址:http://my.oschina.net/jack1900/blog/293145?p=4#comments 相信一步步走过来的Android从业者,每个人都会遇到OOM的情况。如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力。今天我们就谈谈在Android平台下内存的管理之道,开始今天的主题之前,先转载 2015-02-24 01:27:38 · 412 阅读 · 0 评论 -
使用ColorMatrix将imageview变为灰色
我们在编程时有时需要对图片进行处理,比如将图片做成灰色的效果。那么就要用到android为我们提供的颜色矩阵类ColorMatrix。 先介绍一下ColorMatrix这个类,这是一个5*4的矩阵,4行5列。矩阵中存储的是ARGB,即透明度和三原色的值。 现在我们先举个例子,就用android建立项目自带的图片,是绿色的,然后用代码实现变灰。private void i原创 2015-02-24 00:27:05 · 2923 阅读 · 0 评论 -
Android中使用开源库slidingMenu实现侧滑效果
现在的Android应用中很多都有侧滑菜单的存在,为的是让一个小屏幕内展现更多的内容,今天我们使用SlidingMenu这个开源库已经封装好了侧滑的操作,下载的地址是:http://download.csdn.net/detail/u013926110/8460867 接下来就是将下载下来的开源库导入到eclipse中,并在需要引用这个项目上右键,选择properties/and原创 2015-02-27 17:25:17 · 652 阅读 · 0 评论 -
android中textview单行显示,多余的省略
有时候在ListView中显示Textview时由于长度过长而导致text会隔行显示,UI上看起来就比较的不友好。 官方提供了相关的实现单行显示的方法。 <TextView android:id="@+id/music_title" android:layout_width="wrap_content"原创 2015-03-19 22:57:13 · 36308 阅读 · 2 评论 -
java实现随机中文验证码
现在很多应用的验证码采用的中文验证码,一定程度的放大了OCR之类的图像识别破解验证码的难度,原理主要是中文编码的生成格式,规定两个127以后的字节组合在一起形成一个汉字,前面的一个字节(高位)从0xA1到0xF7,后面的一个字节(低位)从0xA1到0xFE。这样就能组成7000多个简体汉字。 为了去掉生僻字,选取高位176到215,低位161到254,保留下来3600多个常用字.原创 2015-03-24 22:35:26 · 2578 阅读 · 0 评论 -
Android配置单元测试
在Android中为了简化代码冗余,利于解耦,经常将一些重复操作,数据库操作,HTTP请求,JSON/XML解析等操作进行单独编写成静态工具类便于调用。而在工具类编写完成后不是马上进行页面布局的实现,而是进行工具类的测试,以免后期出现BUG难以调试。 首先在AndroidManifest.xml配置两行代码 这行是在application中定义的<instrumenta原创 2015-03-26 12:15:50 · 493 阅读 · 0 评论 -
Android圆形imageview实现
现在有的应用在用户头像上使用圆形的imageview,比如百度贴吧。实现上并不困难,需要写一个类继承自ImageView,重写ondraw方法。 代码如下:public class CircleImage extends ImageView { /** * 3个构造函数 * @param context */ public CircleImage(Context原创 2015-03-06 16:24:12 · 1443 阅读 · 0 评论 -
Android的activity跳转动画实现
Android在进行activity跳转时原生动画比较突兀,虽然google官方出了一个方法overridePendingTransition(int enterAnim, intexitAnim),但经过实际的测试发现效果并不如人意,在跳转时前一个界面会出现运动到一半就变黑消失的情况,继而在寻找之后终于发现了一个比较有效的方法,就是自己写一个theme主题,继承自@android:style/A原创 2015-03-08 00:05:03 · 714 阅读 · 0 评论 -
Android之实现具有优先级的线程池
在Android开发中为了复用线程以及节约线程开销,线程池是使用较多的一种方法,有时也会有这样的需求,不同的线程执行任务的紧急度是不一样的,后加入线程池队列的任务可能需要优先处理,在ThreadPoolExecutor的构造函数中需要传递一个继承BlockQueue的子类。 在SDK中已经提供了一个PriorityBlockingQueue这样的优先级阻塞队列,我们要做的就是扩展Run原创 2015-11-19 13:57:31 · 3103 阅读 · 0 评论