自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Socket通信学习实例四之UDP通信

本篇文章介绍下基于UDP协议的Socket通信

2017-02-28 12:08:55 1235

原创 Socket通信学习实例三之断点上传

本篇文章介绍如何通过Socket通信来实现文件向服务器断点续传客户端: 服务端: 对于Socket还不太了解的建议先看看我前面三篇文章 Socket网络知识学习基础 Socket通信学习实例一之建立Socket连接 Socket通信学习实例二之即时通信这个实例我们需要用到断点续传,因此会使用到RandomAccessFile类和Properties类RandomAccessFile类

2017-02-26 22:11:08 2466

原创 Socket通信学习实例二之即时通信

本篇文章介绍如何通过Socket通信来实现一个简单的多人聊天室对于Socket还有点模糊的建议先看看我前面两篇文章 Socket网络知识学习基础 Socket通信学习实例一之建立Socket连接 这个实例我们需要用到ExecutorService类ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像线程池。事实

2017-02-24 21:31:54 695

原创 Socket通信学习实例一之TCP通信

本篇文章介绍如何通过Socket通信来实现TCP连接

2017-02-24 15:08:18 988

原创 Socket网络编程学习基础

OSI七层网络模型说到网络就肯定要先说说OSI七层网络模型,简介如下:物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。   数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这

2017-02-21 17:37:58 1288

原创 自定义SurfaceView之音频录制圆形进度条

本篇文章介绍自定义SurfaceView来实现如下的效果由于对于SurfaceView不是很熟练,这次拿它来练手SurfaceView用途: 一般View可以满足大部分的绘图需求,但如果需要并发执行复杂耗时的逻辑的时候,就会不断阻塞主线程,导致画面卡顿,为了避免这种问题的发生,我们应该使用SurfaceView来解决这个问题SurfaceView使用介绍可以参考另外一篇博客:Android绘图机制

2017-02-21 11:42:36 1152 2

原创 自定义View之音频播放圆形进度条

本篇文章介绍自定义View配合属性动画来实现如下的效果实现思路如下:根据播放按钮的图片大小计算出圆形进度条的大小根据音频的时间长度计算出圆形进度条绘制的弧度通过Handler刷新界面来更新圆形进度条的进度具体实现过程分析:首先来看看自定义View中定义的一些成员变量 //表示坐标系中的一块矩形区域 private RectF mRectF; //画笔 privat

2017-02-19 14:01:02 910

原创 自定义View之支付宝咻一咻效果

本篇文章介绍自定义View配合属性动画来实现如下的效果实现思路挺简单:画一个半透明的圆实现两种动画效果,点击时扩散和不点击时扩散回收使用线程的方式将上面两步结合起来首先看下画半透明圆的部分public class ClickCircleView extends View { private Bitmap bitmap; private Paint paint; pri

2017-02-17 16:11:46 380

原创 自定义Behavior之ToolBar上滑TabLayout颜色渐变

本篇文章介绍使用CoordinatorLayout的自定义Behavior来实现如下的效果分析本例效果首先我们来分析下整个例子需要实现哪些效果:ToolBar的上滑和下滑TabLayout跟随ToolBar上移和下移TabLayout颜色会跟随距离的变化发生渐变滑动时会有黏性效果 滑动距离超过中间值后放开会自动滑向想要的方向滑动距离未超过中间值放开则会自动回弹本例需要的几个重要方法介绍

2017-02-15 17:29:13 2571

原创 自定义Behavior之Floating头像

本片文章介绍使用CoordinatorLayout的自定义Behavior来实现如下的效果 首先观察下,要实现该效果的话可以拆分成三个步骤AppBarLayout上滑收缩下滑展开AppBarLayout内文字的上滑渐隐下滑渐显CircleImageView的放大缩小与位移AppBarLayout上滑收缩下滑展开要实现该步骤很简单,其实就是使用了CoordinatorLayout+AppBar

2017-02-14 21:08:06 2488 1

原创 CoordinatorLayout自定义Behavior的简单总结

前言CoordinatorLayout 是 Google 在 Design Support 包中提供的一个十分强大的布局视图,它可以说是Design库这种最重要的控件,虽说本质上类似于 FrameLayout,但是它允许开发者通过指定 Behavior 从而实现各种复杂的 UI 效果CoordinatorLayout与Behavior介绍官方对CoordinatorLayout的描述:Coordin

2017-02-13 16:11:43 904

转载 Android开发中相见恨晚的方法、类或接口

转载自:http://blog.csdn.net/theone10211024/article/details/47185373Resources类中的getIndentifier(name,defType,defPackage)方法,根据资源名次获取其ID;Array类中的asList(T…array)方法,数组转List集合;View类的callOnClick(),performClick

2017-02-10 21:33:25 226

原创 一个完整Android项目所需要用到的gradle配置技巧

项目根目录的build.gradle配置// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { jcenter() } dependencies {

2017-02-09 21:45:28 3690 2

原创 使用gradle实现批量修改生成的apk文件名

在我们一次性打几十个渠道包的时候,如果我们想让打包完成的apk文件名按照我们想要的格式来命名,比如明确的apk的版本号,打包日期,那个渠道的包等等,这时就需要使用gradle的Variants属性来动态修改生成的apk文件名在app(module)目录下的build.gradle文件内加入如下代码:def buildTime() { def date = new Date() def

2017-02-09 21:16:40 1021

原创 使用gradle实现Android项目debug版与release版共存

在Android项目中,默认debug版与release版的包名相同,从而导致debug版与release版两者不能共存,为了方便开发时的调试,通过gradle我们可以实现让两者在一台手机上共存配置app目录下的build.gradle文件:android { ...... buildTypes { ...... debug { //为

2017-02-09 20:29:25 6655

原创 使用gradle的productFlavors实现Android项目多渠道打包

productFlavors 用法productFlavors顾名思义,就是用来分别定义产品不同的特性,使用它可以用一套代码创建不同的产品 就是用于定义产品的特性,这是每个产品不同的地方。有了它我们可以用同一套代码创建不同的产品。设置productFlavors的方法如下: 在build.gradle中加入productFlavors结构 在app(module)目录下的build.grad

2017-02-09 15:21:52 6875

原创 使用gradle的自定义Property实现Android项目的配置和依赖统一管理

gradle支持自定义property,在GoogleSamples中官方用了Ext(ra) Properties方式来定义了Android的配置文件和统一的依赖管理,这种方式也称动态属性,我们必须使用关键字ext(对应ExtraPropertiesExtension的实例)来定义动态属性在project根目录的build.gradle文件里使用如下配置:ext { //Android co

2017-02-08 21:57:15 1986

原创 LRecyclerView框架 notifyDataSetChanged 图片闪烁的问题

在使用一叶飘舟的LRecyclerView时 由于该框架使用了观察者模式来处理headerView和footView,因此不能用普通的方法来解决notifyDataSetChanged后图片闪烁的问题研究了一下解决步骤如下:解决原理仍旧是在adapter里给viewholder设置tag的方式保存图片urlviewHolder.mPreview.setTag(item.getScaledUrl()

2017-02-08 16:27:56 3430 2

原创 Android控件架构与自定义控件详解(四)事件拦截机制分析

首先我们的实例布局结构如下: MyViewGroupA——最外层的ViewGroup MyViewGroupB——中间的ViewGroup MyView——最底层的View 代码非常简单只是重写了事件拦截和处理的几个方法,并给它加上一些Log而已对于ViewGroup来说,重写了如下三个方法 @Override public boolean dispatchTouchEvent

2017-02-05 20:47:33 402

转载 Maven构建项目速度慢问题解决

转载自:http://www.cnblogs.com/rainy-shurun/p/5726758.htmlMaven项目进行构件的时候速度会很慢,由于maven每次进行创建的时候回去网上下载artheType-catalog.xml文件,而且,现在这个文件比较大,已经接近5M的大小,所以,在网速不好的情况下,创建项目会非常慢,所以,当前解决办法是将文件下载到本地进行保存后再进行构建项目,那样就快很

2017-02-05 17:47:52 1053

原创 使用ffmpeg来将mp4视频转换成gif格式图片

ffmpeg -i S70131-15433307.mp4 -s 272x480 -b:v 200k output1.mp4-s用于设定分辨率,-b:v设定视频比特率来压缩大小ffmpeg -ss 2 -t 5 -i output1.mp4 -s 272x480 -r 15 output1.gif-ss 2 -t 5,从第2秒的地方开始,往后截取5秒钟, -r 用于设定帧数. 通常Gif有15帧

2017-02-02 20:06:04 16197 4

原创 Android控件架构与自定义控件详解(三)自定义ViewGroup

之前分析了如何自定义View,下面来分析如何创建自定义ViewGroup,ViewGroup存在的目的就是为了对其子View进行管理,为其子View添加显示、响应的规则。因此,自定义ViewGroup通常需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法来确定子View的位置,重写onTouchEvent()方法增加响应事件。下面将实现一个类似Android原生控

2017-02-02 18:18:01 300

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除