- 博客(144)
- 资源 (12)
- 收藏
- 关注
原创 “一盘沙拉”带你入门Dagger2(一)之HelloWorld
系列文章“一盘沙拉”带你入门Dagger2(一)之HelloWorld“一盘沙拉”带你入门Dagger2(二)之带参数怎么办“一盘沙拉”带你入门Dagger2(三)之@Qualifier“一盘沙拉”带你入门Dagger2(四)之 @Singleton“一盘沙拉”带你入门Dagger2(五)之 @Scope引子使用Dagger2这个框架,可以高效的在Android(java)中实现“依赖注入”。什么是
2016-08-31 13:53:02 3502 2
转载 MVP好文章转载
Android官方MVP架构项目解析(spiritTalk ) 官方MVP架构项目Demo(官方推荐View专指Fragment)下面是同一篇文章 如何更高效的使用MVP以及官方MVP架构解析(还不走A) MVPSample(作者写的Demo,一般MVP到封装后的MVP,很好用)浅析如何高效的使用MVP(还不走A 鸿洋微信)
2016-08-25 10:17:49 585
原创 如何正确导入github上的项目
第一步可以看到这个项目中有两个文件夹 demo 是Project项目easyrecyclerView是上面的demo所依赖的第三方库(moudle,类似于eclipse的library)要双击根目录下的build.gradle开始导入,而不是打开demo文件夹去导入 第二步你发现报错了,而且点击错误提示,re_load也无济于事,怎么办呢 答案: 我们经常会在 GitHub 发现一些优
2016-08-24 11:58:04 11968 1
原创 自定义View---抽屉效果
说明这个自定义View,没有处理好多点触摸问题View跟着手指移动,没有采用传统的scrollBy方法,而是通过不停地重新布局子View的方式,来使得子View产生滚动效果menuView.layout(menuLeft, 0, menuLeft + menuWidth, menuHeight);相应的,由于没有使用scrollBy方法,就没有产生getScrollX值,所以不能通过Scrol
2016-08-22 21:59:31 1074
原创 Glide使用详解
Glide转换主要用到这个库glide-transformations如何配置glide-transformations1.设置起来很简单,对于基础版本你只需要在你当前的 build.gradle(Moudle:app) 中添加一行代码就可以了。dependencies { compile 'jp.wasabeef:glide-transformations:1.2.1'}2.如果你想
2016-08-22 11:16:02 1626
原创 RxJava入门第十问(三)
10. 说一说大名鼎鼎的Scheduler —-线程控制吧我觉得RxJava之所以这么受欢迎,除了“变换”,最重要的就是“Scheduler ”—线程控制了。 在Android开发中, - 耗时、耗资源的操作必须放在子线程执行 - 改变UI必须放在主线程执行这样线程的频繁切换,使得代码很难写,也很难被读懂,虽然 Android给我们创造了 AsyncTask 和Handler,但是随着程序逻辑
2016-07-20 21:01:41 542
原创 RxJava入门第八、九问(二)
开始第8个问题之前,先说一个词:变换,什么意思呢? RxJava官方解释:所谓变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。 如果你通过上面的定义没有很好地理解什么是变换、以及为什么要使用变换,那么请看下面这个故事:庖丁宰鸡(包学包会) 养鸡户(被观察者)发送了一个数据: - 一只活蹦乱跳的鸡。 而这个养鸡户
2016-07-20 00:11:03 2075 1
原创 RxJava入门七问(一)
1. RxJava采用了观察者模式,什么是观察者模式呢,能不能举个例子?答:小偷(被观察者)把手伸进路人的钱包后(事件),给警察(观察者)发了条短信,曰:快来抓我哟!警察收到信息后,立马采取行动,把小偷按倒在地(行动) 这个小偷是不是很贱,偷东西还要告诉警察2. 一个语文作业题:分析下面这句话的主、谓、宾 observable.subscribe(observer)答: - 主语:observa
2016-07-17 20:31:02 2216
原创 Android Studio 如何关联源码(关联你想要的任何版本的源码)
问题今天升级了API 24,但是关联源码失败了,因为没下载API 24的源码,直接点击下载,却提示没有API 24源码的资源,打开SDK Manager,发现确实没有API 24的源码资源 Android Studio 应该是在你升级到新的API后,默认让你关联新的源码,但是当你没有下载的对应级别的源码时,你就无法关联到该源码了。该怎么办呢。如何解决打开C:\Users\用户.AndroidStu
2016-07-08 11:30:28 17683 8
原创 弹出、收缩的菜单
package pic.com.menudemo;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import andro
2016-07-07 17:30:32 1690
原创 如何在图片上写文字
我们要处理一张图片,并不会直接在这张图片上直接进行处理,一般都会在内存中创建这张图片的copy,然后在这张copy上对图片进行处理创建图片内存拷贝根据原图创建大小一摸一样的空白图片。 Bitmap bitmapCopy = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); 当然,创建
2016-07-07 11:41:05 1327
原创 canvas drawText如何换行
用android的canvas drawText的时候,即使text包行\r\n,画出来的仍然不会换行。这时需要用到TextPaint TextPaint textPaint = new TextPaint(); textPaint.setColor(Color.parseColor("#ffffff")); textPaint.set
2016-07-01 14:27:49 10360 1
原创 自定义ViewGroup
引子:标准的自定义ViewGroup应该包含什么github第一部分支持wrap_content 即当ViewGroup的宽、高使用wrap-content时,ViewGroup的高宽根据子View的实际大小来确定 如果你不处理的话,“wrap-content”的和 “match-parent”是一样的ViewGroup支持Padding其子View支持margin支持自定义属性
2016-06-28 16:49:37 2201
原创 Service之基础(开启服务、绑定本地服务)
Service什么是Service一个组件长期后台运行,没有界面。简单的理解:service理解成一个没有界面长期运行的activity。特点:即使进程被杀死,稍后service会重新启动开启服务的第一种方式(很简单)前提(略) 继承Service 清单注册Service 如何开启服务 startService(this,MyService.class)如何关闭服
2016-06-19 00:40:00 932
原创 BroadcastReceiver简介
源码涉及到的内容接收系统广播发送自定义广播 无序广播 intent携带数据有序广播 终止广播修改广播数据得到广播数据指定最终广播接受者,即使被终止,也会受到系统常用广播的配置 应用方面 拦截短信 串改短信内容拦截电话 串改拨出的号码特殊情况 (屏幕开关的事件) 代码注册代码注销BroadcastReceiver入门(一)什么是广播接受者BroadcastRec
2016-06-18 15:31:51 4414
原创 自定义布局---竖向的ViewPager
效果图:这个自定义控件涉及到的知识点:自定义ViewGroup中onMeasure和onLayout的写法 弹性滚动Scroller的用法 速度轨迹追踪器VelocityTracker的用法 如何处理滑动事件冲突dispatchTouchEvent:(外部拦截)告诉此ScrollLayout的父布局,什么时候该拦截触摸事件,什么时候不该拦截触摸事件onInterceptTouchEvent:(
2016-06-05 00:44:52 3003 1
原创 RecyclerView上下拖动条目排序,左右划出屏幕删除条目的最简单的实现
效果图参考RecyclerView的拖动和滑动 第一部分 :基本的ItemTouchHelper示例概述:ItemTouchHelperAdapter:(★)RecyclerListAdapter需要实现这个接口, RecyclerListAdapter通过ItemTouchHelperAdapter的onItemMove和onItemDismiss方法来完成条目移动、条目消除的操作,并且通过no
2016-05-31 13:57:52 4991 2
原创 把商品添加到购物车的动画效果(贝塞尔曲线)
如图:参考:Android补间动画,属性动画实现购物车添加动画思路:确定动画的起终点在起终点之间使用二次贝塞尔曲线填充起终点之间的点的轨迹设置属性动画,ValueAnimator插值器,获取中间点的坐标将执行动画的控件的x、y坐标设为上面得到的中间点坐标开启属性动画当动画结束时的操作难点:PathMeasure的使用 - getLength() - boolea
2016-05-30 20:17:43 17816 6
原创 AndroidStudio如何获取sha1值
前提 获取Android签名证书的sha1值 上文讲了如何获取debug.keystore的sha1值 那么如何获取自定义签名的sha1值呢 运行命令 1、使用cd命令,将工作目录切换到C:\Documents and Settings\Administrator.android目录下2、输入:keytool -list -keystore F:\xxxxxxxxx.jks3、输入密钥
2016-05-27 11:24:24 578
原创 简陋的冰桶挑战小游戏
package com.github.c.game;import android.animation.ObjectAnimator;import android.animation.TimeInterpolator;import android.animation.ValueAnimator;import android.os.Build;import android.os.Bundle;
2016-05-25 09:22:31 705
原创 《Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系》观后感
引子 今天学习了鸿洋大神的Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系,文章写得很精彩,推荐大家都来阅读,在这里做个笔记。Handler 、 Looper 、Message之间的关系?Looper负责的就是创建一个MessageQueue,然后进入一个无限循环体不断从该MessageQueue中读取消息msg。Handler负责(在子
2016-05-24 11:54:51 816
转载 OkHttp3用法
转载:写的很详细,可下载demo Android网络编程(六)OkHttp3用法全解析测试上传文件时,可以把文件上传到 https://api.github.com/markdown/raw 里还有这篇文章 OKHttp3.0的日常及入门Retrofit2.0+okhttp3缓存机制以及遇到的问题使用Retrofit和Okhttp实现网络缓存。无网读缓存,有网根据过期时间重新请求
2016-05-23 16:45:17 653
原创 Retrofit2的get请求和post请求
准备工作<uses-permission android:name="android.permission.INTERNET"/> compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2'定义package com.github.c.retrofit2d
2016-05-23 11:35:49 20221 3
原创 学会Retrofit,你可以参考的文章
如果你对Retrofit 一点都不懂的话,建议你阅读下面的文章,把代码粘贴到Android Studio里运行一下,你会对Retrofit 有个大概的体会 Retrofit 解析 JSON 数据 通过运行上面文章的代码,你可能入门了,那么你需要进一步了解下面的内容 Retrofit – Java(Android) 的REST 接口封装类库再看看这两篇总结 对比1.0和2.0之间的不同
2016-05-18 22:13:17 871
原创 大图片压缩后,保存小图片到本地
目的:从本地path中获取bitmap,压缩后保存小图片到本地 涉及到的知识点: 根据ImageView获取适当的压缩的宽和高,尽可能得到ImageView的精确的宽高 通过反射获取imageview的某个属性值 根据图片要显示的宽和高,对图片进行压缩,避免OOM 根据需求的宽和高以及图片实际的宽和高计算SampleSize package com.example
2016-05-15 13:26:36 3380 1
原创 Android存储(读取)之SharedPerference(最常用)
使用方法通过上下文获取spsp = context.getSharedPreferences("config", MODE_PRIVATE);获取到sp的编辑器Editor editor = sp.edit();编写编辑sp文件editor.putBoolean(key,value);editor.putString(key,value);editor.putInt(key,value);e
2016-05-15 13:02:25 2579
原创 Android存储(读取)之缓存CachesDir存储
数据存储到缓存中:data/data/包名/caches/,储存在缓存里的文件,当内存不足时,会自动释放掉也可以点击清除缓存来清除数据// 把String保存到私有文件夹中:data/data/包名/files/ StoreUtils.storeStringToCachesDir(this, "cachesDir", "ha.txt"); //读取data/dat
2016-05-15 11:31:44 983
原创 Android存储(读取)之内存FilesDir存储
数据存储到私有文件夹中:data/data/包名/files/点击“清除数据”按钮可以删除data/data/包名/files/下的数据 // 把String保存到私有文件夹中:data/data/包名/files/ StoreUtils.storeStringToFilesDir(this, "fileDir", "ha.txt"); //读取data/dat
2016-05-15 11:24:53 2034
原创 Android存储(读取)之SD卡
本文讲解了SD卡存储和读取数据(数据内容仅限为String)package com.github.c.ceshi;import android.content.Context;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;impor
2016-05-14 23:27:15 1297
原创 Android Studio SVN 使用方法
Android Studio SVN 使用方法如何安装配置SVN 请直接参考《SVN在Android Studio中的配置》 http://www.cnblogs.com/songmeng/p/4389446.html如何使用SVN 本文主要参考了《AndroidStudio配置SVN以及使用代码管理》 http://www.it165.net/pro/html/201
2016-05-12 21:19:57 83056 11
原创 ScrollerLayout——可横向滚动的自定义viewgroup
具体功能看效果图: 如何录屏小贴士 使用手机自带的录屏软件,录制后卫MP4格式,在使用下面这个网址介绍的方法,转为gif(我是用的是在线转的那个,挺好用) Android手机如何录制屏幕及转GIF这个自定义控件涉及到的知识点:自定义ViewGroup中onMeasure和onLayout的写法弹性滚动Scroller的用法速度轨迹追踪器VelocityTracker的用法如何
2016-05-09 11:20:33 3307 2
原创 VelocityTracker简单用法
VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch event(比如Gestures中的Fling, Scrolling等), VelocityTracker通过跟踪一连串事件实时计算出,下面简单介绍一下用法。可参考:这篇文章的介绍//获取一个VelocityTracker对象, 用完后记得回收 //回收后代表你不需要使用了,系统将此对象在此分配到其他请求
2016-05-06 13:46:03 1062
原创 轮播图,使用简单,代码里一句话搞定,多个参数可自定义修改
github传送门效果图:实现的功能:1.自动、无限播放的轮播图,对应每个轮播图页面的点击事件(传递position) 2.手指在操作轮播图时(以及该页面不再显示时),轮播图自动播放功能会停止 3.手指停止操作轮播图时(以及该页面再次显示时),轮播图自动播放启动 用法及其注意事项:1.外部直接new即可,注意不是new LunBoTu而是new LunBoTu.Builder(具体用法参照dem
2016-05-05 15:30:21 1987
原创 RecyclerView里嵌套ViewPager,滚动RecyclerView时,记住之前ViewPager滑动后的位置
如果是ListView里嵌套ViewPager的话,首先要考虑的是竖向滑动和横向冲突的问题,RecyclerView的话,不用考虑此问题方法:准备一个map来存储你滑动过的ViewPager所在的RcyclerView中的位置和你滑动ViewPager后,ViewPager所显示的内容的位置RcyclerView每次显示其item时,使其内部的ViewPager,按照map里保存好的信息,来显
2016-05-05 15:18:21 8347
转载 RecyclerView android:layout_width="match_parent"无效解决方法
使用RecyclerView 时,在xml文件中设置宽度match_parent无效,发现在Adapter中要如下填充view(注释掉的填充方式会导致match_parent无效)/** * 创建新View,被LayoutManager所调用 */ @Override public ViewHolder onCreateViewHolder(ViewGro
2016-05-04 10:24:32 3535
原创 GridView如何使得item之间的距离和左右侧距离相等
屏幕宽:WIDTH item宽:width item的TopPadding:top GridView所在的parent的padding值:paddingGridview默认设置是把item的宽度减去之后的宽度,分为3部分,左1,中2,右1,根据这个特性,结合Gridview所在的parent的padding值,就可以计算出其中的关系,得到想要的间距等分的效果,计算出间距等分后,令item的To
2016-04-22 13:40:01 4692
原创 自定义控件---OnMeasure()方法分析
自定义View的第一步就是要测量Measure控件的大小,所以了解OnMeasure至关重要首先说说MeasureSpec类protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec);
2016-04-13 20:32:13 704
原创 canvas.drawText(string, xPos, yPos, paint)文本居中的办法
paintText = new Paint(); paintText.setStrokeWidth(1); paintText.setAntiAlias(true); paintText.setColor(Color.RED); mTextSize = 700; paintText.setTextSize(mTextSi
2016-04-06 14:57:07 666
原创 图片Path转换为Uri的方法
// 根据Uri.fromFile(file)方法即可将path转为uri Uri sourceUri = Uri.fromFile(new File(mSelectPath.get(0)));// 创建裁剪照片之后保存的路径,也是先用path--->file--->Uri Str
2016-04-01 16:34:11 5883
轮播图的写法之二(功能全实现)
2015-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人