- 博客(32)
- 资源 (6)
- 收藏
- 关注
原创 Android web界面丝滑进度条
一、概述编写Android中Web界面,基本都是WebView + ProgressBar相结合使用。通过WebChromeClient的onProgressChanged(WebView view, int newProgress) 方法可以拿到当前url的加载进度,并在此方法中调用ProgressBar的setProgress方法将当前网页进度以进度条的形式表现在UI界面上。核心代码如下:...
2019-07-21 16:44:04
1164
原创 ImageView scaleType属性
文章目录前言类型解释名词解释缩放比例规则前言ImageView scaleType 共八种类型,分别为:center、center_inside、center_crop、matrix、fit_xy、fit_start、fit_center、fit_end , 默认scaleType类型为fit_center类型解释center: 保持原图的大小,不做任何比例缩放处理,显示在ImageV...
2019-06-13 16:11:52
495
原创 Retrofit 注解最全使用讲解
method annotation 方法注解@GET @POST @Multipart @FormUrlEncoded @Headers (@PUT/@DELETE/@PATCH/@HEAD 不经常使用所以省略)@Get ① 不可以搭配 @FormUrlEncoded 和 @Multipart ②可以搭配@Headers@POST ① @FormUrlEncoded (普通表单上传) / @P
2017-11-29 12:03:07
980
原创 Git 命令
Git 命令① git clone SSH网址。 克隆工程到本地② git branch zz 本地创建zz一个分支③ git checkout zz 切换到zz分支④ git checkout -b doudou 本地创建zz 分支,并切换到zz分支⑤ git branch -d branchname 删除本地分支⑥ git push origin :branchname 删除远程分支⑦
2017-11-28 11:19:06
347
原创 23种设计模式☞开闭原则
软件实体应该对扩展开放,对修改关闭 > 其含义就是说一个软件实体应该通过扩展来实现变化,而不是修改已有的代码来实现变化。开闭原则对测试的影响一个项目基本的流程应该是这样的:项目开发,重构,测试,投产,运维。 其中重构是对原有代码进行修改。投产之后发布到线上的代码都是经过千锤百炼的,可以说是没有任何错误的,稳定的代码。现在需求变化了,如果直接修改以前的代码,那是不是测试人员就需要重新测试一遍啊。运
2017-11-07 16:02:02
547
原创 从一个最简单的例子来看Retrofit(一)
Demo代码分析Retrofit 初始化本文将从Retrofit 官网上提供的一个简单的例子来大致看一下Retrofit的代码Demointerface: @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors(@Path("owner") String owner, @Path(
2017-09-21 22:12:09
780
原创 从一个最简单的例子来看Retrofit(二)
从一个最简单的例子来看Retrofit(2)本文将从Retrofit 官网上提供的一个简单的例子来大致看一下Retrofit的代码Demointerface: @GET("/repos/{owner}/{repo}/contributors") CallList> contributors(@Path("owner") String owner, @Path("repo
2017-09-16 22:55:43
499
原创 Android ApiClound 自定义模块未绑定解决方案
由于公司发展需要决定由原生态开发转向混合开发。所谓混合开发就是我们android 开发人员和IOS开发人员各自对自己原生模块的代码进行封装,以便H5开发人员能够通过JS进行调用。 而原生和H5之间交互的媒介我们公司则选用了Apiclound 平台。下面说一下在封装自定义模块出现模块未绑定,应该从哪几方面考虑:模块打Jar 包出现错误我们知道android 打成jar 包是不含Resource文件夹
2017-09-11 16:22:44
4016
原创 关于Handler几个小知识点
说到Handler想必大家都不陌生!Android中主要的消息机制也就体现在Handler上,在日常开发中最常见的操作就是通过Handler更新UI(子线程是不允许更新UI的)。简要概括一下Handler机制Handler在初始化过程中和Looper进行绑定,确切来说是为了和MessageQueue 进行绑定,有了MessageQueue消息队列就可以通过sendMessage等方法将Messag
2017-06-04 14:06:27
514
原创 AsyncTask源码解析
这一篇主要记录一下AsyncTask( compileSdkVersion 25 buildToolsVersion “25.0.3”)AsyncTask基本示例: //AsyncTask(Params,Progress,Result) class MyAsyncTask extends AsyncTask<Integer, Integer, Void> { pri
2017-06-04 14:03:11
426
原创 位运算在Android中的使用场景
首先说一下基本位运算知识:位运算:位运算就是把数字用二进制表示之后,对每一位上0或者1的运算。位运算总共只有5种运算:与、或、异或、左移、右移。如下表:左移运算:左移运算 左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0.比如:00001010 << 2 = 00101000 10001010 << 3 = 01010000右移运算: 右移运算符m>>n表示把m右移n位。右移n位的时候
2017-06-03 11:26:14
1048
原创 Android 热修复Tinker 在项目中的使用
热修复技术出来也已经有好长一段时间了,目前比较主流的热修复方案主要有一下几种:QQ团队基于android dex分包方案提出的热修复方案,代表:Nuwa , HotfixAlibaba 提出的热修复方案,代表:AndFix(目前使用最多,兼容问题较严重)Tecent 提出的热修复方案 代表: tinker (目前性能最优,兼容最好)blog 上很多大神都对热修复技术做出过自己的分析
2017-04-16 17:21:32
1543
原创 TypedValue 和 TypedArray
获取自定义属性值常会使用TypedValue 和 TypedArray 类TypedValueapplyDimension ( return float )complexToDimension (return float)TypedArraygetDimension (return float)如下是自定义View中获取自定义属性方法: T
2017-04-05 23:09:09
1516
原创 MeasureSpec类理解
MeasureSpec 常用在自定义View中,自定义View中经常要复写onMeasure方法: @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSp
2017-03-20 23:02:30
1229
原创 java 序列化和反序列化
序列化使用场景通过Intent 或者 Binder 传输数据时将对象持久化到设备上序列化类serializable (java.io.Serializable)parcelable (android.os.Parcelable)Serialzable使用示例:public class Book implements Serializable{ priv
2017-03-20 22:36:28
352
原创 fork函数
系统环境:ubuntu进程特性:每一个进程都有一个非负整型的唯一的进程id.一个进程结束之后,其进程id 不用被新创建进程立即复用,大部分unix系统为采用延迟复用算法。UNIX 中提供获取进程id 和 父进程 id 函数 pid_t getpid (void); // return process id pid_t getppid (void); // return pa
2017-03-12 21:38:55
606
原创 从一个小例子理解stdio 和 sysio
系统环境 ubuntu#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(){ putchar('a'); write(1,"b",1); putchar('a'); write(1,"b",1); putchar('a'); write(1,"b",1); exit
2017-03-05 21:29:04
500
原创 Canvas 方法效果演示
好记性不如烂笔头,记录一下canvas常见的方法及效果演示Canvas多使用在自定义View中,onDraw()方法绘制图形 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); }canvas 可以大致分为一下几类:drawXXX 等一系列绘制方法scale rotat
2017-03-03 23:40:39
540
原创 setStrokeWidth() 方法思考
最近新买一款Nexus 6 手机,看着手机上原生的Android 界面,一种说不出的感觉!这可能就是对谷歌的信仰!setStrokeWidth()是Paint中的一个方法,自定义View的时候经常用到 /** * Set the width for stroking. 设置描边的宽度(也就是控制画笔的粗细) * Pass 0 to stroke in hairline m
2017-03-03 20:38:00
6670
原创 Activity 中点击Button 让 Editext 失去焦点 Button 点击两下解决方案
好久不写blog了,今天就记录下一个小问题吧。如标题:一个界面中有一个Editext ,一个Button 如何点击Button让Editex失去焦点。直接上代码xml 布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h
2016-12-15 22:51:53
3356
1
原创 横竖屏切换SurfaceView 大小的调整
视频播放的实现大概有以下形式:1.使用系统自带视频播放类VideoView2.使用MediaPlayer+surfaceView3.使用一些第三方框架如:vitamio 还有像新浪在github上开放的视频播放框架等...使用场景:第一种方法:简单,但是VideoView不支持自定义视频,也就是你只能使用系统给你提供的布局,这在很大时候是不符合我们项目需求的。第二种方法:使
2016-10-30 19:37:49
12394
原创 android:如何做到软件盘弹出只顶起输入框
最近在做视频直播项目中遇到这个问题,当用户点击主播房间,进行直播观看,在下方点击输入框发送信息时,发现了不光是EdiTextView 被软键盘弹起,就连surfaceView也被压扁了。哦,忘记说一点我在Manifest.xml定义该Activity的属性中添加的是WindowSoftInputMode="adjustResize"。首先说一下两种WindowSoftInputMode的两个属
2016-10-26 10:48:53
8903
原创 Error:(1, 0) Plugin with id 'com.android.application' not found. 解决方案
使用AndroidStudio 导入一个项目的时候出现上述标题错误:Plugin with id 'com.android.application' not found。原因:你导入的是一个module,而不是一个Project。你的操作步骤大概如下图:选择ImportProject 是不正确的。正确步骤如下:1.新建一个工程Project。(这个就不多说了)2.选
2016-10-25 15:17:51
836
原创 java设计模式-观察者模式
大家可能都在用RxJava 或者是EventBus 吧!其实这两种工具都是运用的观察者模式,要想弄懂上面两个库,观察者模式是基础。接下来我就简单的介绍一下观察者模式。观察者模式分为两个部分:观察者(observer)和被观察者(observable). 和我们平常使用的监听回调不同(一对一),观察者模式采用的是一对多的形式,当被观察者发生改变之后,发送消息给观察者,然后观察者做出相应的改变,这
2016-10-22 10:06:14
312
原创 android多媒体-视频录制及存储
以前写过一个视频录制功能,最近又看了一下,重新修复了一些问题。由于代码比较长,我就不给大家去一点一点的讲解了,在代码中我都注释的很详细了,在这只是罗列出来一些注意的事项,代码大家可在文末进行下载。ok,先上一张效果图:怎么样,从效果上看还是可以的吧!视频录制功能包括:摄像头的切换、闪光灯的开启、视频录制并保存、摄像头自动对焦 功能。需要注意的是一旦视频录制开始就能有办法切换摄像头或者开
2016-10-05 20:01:36
2604
原创 实现View 滑动的几种方法
时间过得真快,一转眼就要到10月了,这几天风刮的厉害,气温骤降,看来秋天真的要来了!今天我主要是给大家讲一些实现View平滑的移动的方法,View 平滑移动的方法一般有一下三种:1.通过View 本身提供的scrollTo / scrollBy 方法实现滑动2.通过动画给View施加平移效果来实现滑动3.通过改变View 的LayoutParams 使得重新布局从而实现滑动
2016-09-27 13:19:02
498
原创 RequestLayout() , Invalidate() , layout()之间的区别
在自定义控件的过程会遇到以上方法,三个方法的区别如下:1. requeLayout() : 控件会重新执行 onMesure() onLayout() ,比如 ScrollView中有LinearLaout ,LinearLayout里面有纵向排列的ImageView和TextView,那么假如ImageView的长宽发生了变化,而要立即在手机上显示这个变化的话,就可调用 imageView.
2016-09-11 15:36:26
10342
原创 使用FFmpeg4android 实现视频 水印 剪切 压缩 旋转
翻看了一下自己的上一篇博客,7月5号写的......,瞬间不高兴了,写博客贵在坚持,而自己在这段时间确松懈下来了,实在不应该呀!罪过罪过!最近这一段时间内,公司的项目迭代更新需要添加新的功能包括:视频的录制和压缩上传等....,这些功能中 视频压缩上传不是很好解决。大概花了我一周左右的时间去研究和写demo.过程是痛苦的,最终黄天不负有心人啊,还是弄出来了。测试结果:录制5分钟 77M 压缩
2016-07-25 23:42:00
6416
17
原创 Android Mediaplayer error (1, -2147483648) Error (-38,0)解决方案(网络记载和本地加载两种情况)
在项目中使用surfaceView 或者使用 mediaplayer + surface 来进行网络或者本地视频播放,经常会遇到 error (1, -2147483648) Error (-38,0)这样的错误,error value (1, -2147483648) , 1 代表着MediaPlayer.MEDIA_ERROR_UNKNOWN,-2147483648 在framework
2016-07-05 09:05:08
43955
SmoothProgressDemo.rar
2019-07-21
Tinker 热修复demo
2017-04-16
android 视频录制
2016-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人