Android学习笔记
文章平均质量分 87
学好android,做优秀的程序猿
tuke_tuke
这个作者很懒,什么都没留下…
展开
-
FFmpeg4.1编译:mac+android-ndk-14b+ffmpeg4.1成功编译
一,下载FFmpeg4.1使用源码:git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg下载到你向的目录下,我是新建了一个文件夹buildffmpeg/ffmpeg,放在这个下面。然后`cd ffmpeg`进入ffmpeg 使用git命令 拉取远程的 origin/release/4.1到本地git checkout -...原创 2019-08-13 15:01:15 · 879 阅读 · 0 评论 -
Android踩坑日记:android7.0动态相机权限
前提:项目中使用的动态权限开源库github:https://github.com/yanzhenjie/AndPermission。转载必须注明本文转自严振杰的博客:http://blog.csdn.net/yanzhenjie1003添加依赖:compile 'com.yanzhenjie:permission:1.0.3'Android6.0:众所周知,And原创 2017-12-22 12:31:12 · 24763 阅读 · 5 评论 -
Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化
1,fresco是一个强大的图片加载库 2,fresco设计了一个叫做image pipeline(图片管道)的模块,它负责从从网络,从本地文件系统,从本地资源加载图片,为了最大限度节约资源和cpu时间,它设计了3级缓存(2级内存,1级文件) 3,fresco设计了一个叫做drawee的模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。 4,支持原创 2017-10-21 11:44:12 · 2093 阅读 · 0 评论 -
Android踩坑日记:点击变暗效果的ImageView实现原理
很多时候我们使用ImagView显示图片,无论是Gilde,Fresco等图片显示框架,比如设置中心更换头像,网格相册点击预览,选择等情况,会遇到点击变暗的交互需求。源码分析 我们想的办法是自定义一个ImageView,当点击图片时,是不是有回调方法来同时改变图片的滤镜或者蒙版等。 特意去看了View.java的源码(ImageView继承View),想看看View被点击之后是是原创 2017-10-21 10:00:57 · 1753 阅读 · 1 评论 -
Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
EditText设置监听软键盘删除键(或enter)一般使用方法edittext.setOnKeyListener(new View.OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE原创 2017-10-13 10:43:35 · 807 阅读 · 0 评论 -
Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑
RecyclerView中EditText和ImageView的ViewHolder复用坑 RecyclerView作为ListView的升级版,目前来讲讲开发过程遇到的坑。RecyclerView 中使用 EditText 滚动后数据消失,错乱 场景:RecyclerView中的每个Item的ViewHolder布局中为都有EditText控件,且ViewHolder实现文本改变监听器Tex原创 2017-09-20 19:46:36 · 3842 阅读 · 0 评论 -
Android踩坑日记:自定义水平和圆形ProgressBar样式
自定义水平和圆形ProgressBar样式1.自定义水平ProgressBar样式 ProgressBar分为两种,我们能明确看到进度,不确定的就是不清楚、不确定一个操作需要多长时间来完成,这个时候就需要用的不确定的ProgressBar了。 ProgressBar(Horizontal 才有,无进度的没有)有两个进度,一个是android:progress,另一个是android:s原创 2017-09-20 16:02:55 · 6400 阅读 · 2 评论 -
Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑
Okhttp设置User-Agent你可能没遇到的坑Okhttp走的并不是原生的http请求,因此他在header里面并没有真正的User-Agent,而是”okhttp/版本号”这样的字符串,因此后台需要统计信息,要求传入正确的User-Agent,那么我们如何User-Agent并设置给Okhttp? /** * 返回正确的UserAgent * @return原创 2017-09-20 14:45:32 · 9086 阅读 · 0 评论 -
Android踩坑日记:Android字体属性及测量(FontMetrics)
Android字体属性及测量(FontMetrics)字体的几个参数,以Android API文档定义为尊,见下图 要点如下:基准点是baselineAscent是baseline之上至字符最高处的距离Descent是baseline之下至字符最低处的距离Leading文档说的很含糊,其实是上一行字符的descent到下一行的ascent之间的距离Top指的是指的是最高字符到baseli原创 2017-09-20 14:17:45 · 2322 阅读 · 0 评论 -
Android自定义ViewGroup的OnMeasure和onLayout详解
前一篇文章主要讲了自定义View为什么要重载onMeasure()方法http://blog.csdn.net/tuke_tuke/article/details/73302595那么,自定义ViewGroup又都有哪些方法需要重载或者实现呢 ?Android开发中,对于自定义View,分为两种,一种是自定义控件(继承View类)。一种是自定义布局容器(继承ViewGroup类)。如果原创 2017-06-17 15:16:11 · 9177 阅读 · 0 评论 -
Andoid自定义View的OnMeasure详解和自定义属性
Android开发中偶尔会用到自定义View,一般情况下,自定义View都需要继承View类的onMeasure方法,那么,为什么要继承onMeasure()函数呢?什么情况下要继承onMeasure()?系统默认的onMeasure()函数行为是怎样的 ?本文就探究探究这些问题。这篇文章获取可以加深多自定义view的理解。首先,我们写一个自定义View,直接调用系统默认的onMeasure函原创 2017-06-15 22:20:26 · 6217 阅读 · 2 评论 -
Android Studio新建类头部注释和添加函数注释模板及快捷键
一,Android Studio新建类头部注释是不是有时候看到这个很心烦其实Studio中有设置修改这些注释模板的信息的功能 其实很简单,只需要两步: 1.打开Setting设置面板,找到File and Code Templates,选择Includes下的File Header 2.修改成自己需要的变量名即可二,Android Stu原创 2017-06-15 18:44:15 · 51224 阅读 · 1 评论 -
什么时候用抽象?什么时候用接口?
对于抽象类以及接口的概念,大家都容易把这两者搞混,其实我也一样,在听李建忠老师的设计模式时,他也老把抽象类说成接口,弄的我就更糊涂了,所以找了些网上的资料。抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”为外部提供调用或功能原创 2017-06-15 10:23:16 · 3066 阅读 · 1 评论 -
Android系统主题总结和使用
一,Android主题的发展过程1,在Android3.0之前,Android的界面不论是从系统还是空间的主题都是按钮为白色,点击事件为黄色。现在看来很简陋。2,Holo主题:Android3.0 (API11)开始,Google推出了Holo主题(就是我们印象中的黑底白字蓝主色的主题)。在4.0重google又发布了应用设计规范Android Design。有了设计规范的指导,就原创 2017-06-13 20:14:07 · 7137 阅读 · 3 评论 -
Android Studio的Gradle常用命令配置和依赖管理
一,gradlew常用命令./gradlew -v 版本号./gradlew clean 清除工程目录下的build文件夹./gradlew build 检查依赖并编译打包这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如./gradlew原创 2017-06-09 20:11:19 · 1577 阅读 · 1 评论 -
Android Studio目录结构和Gradle构建Android项目
一,Android Studio的目录结构和工程项目介绍二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运行。 2,工程结构不一样,在Eclipse中的一个Project就代表一个项目工程即Android应用,而在Android Studio中一个Project代表一个项目原创 2017-06-09 14:24:06 · 2711 阅读 · 0 评论 -
Android PullToRefresh(下拉刷新)的使用详解
开源项地址:https://github.com/chrisbanes/Android-PullToRefresh在Android-PullToRefresh-master文件夹下,我们会看到还有三个文件夹:extras,library,sample。其中sample就是作者为我们提供的Demo,library是我们在使用Sample必须用到的jar。extras中是使用ListFragm原创 2016-08-16 21:02:54 · 1946 阅读 · 0 评论 -
Android触摸事件源码分析:Activity->ViewGroup->View
Activity中当屏幕有touch事件时,首先调用Activity的dispatchTouchEvent方法 /** * Called to process touch screen events. You can override this to * intercept all touch screen events before they are dispatc原创 2016-08-14 21:41:07 · 1306 阅读 · 0 评论 -
Anroid-async-http封装网络请求框架源码分析
Android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单, 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果. 主要特点:处理异步Http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,不会阻塞UI操作,原创 2016-07-11 19:44:46 · 3861 阅读 · 0 评论 -
android自定义LinearLayout和View
自定义线性布局经常用到:第一种是在扩展的LinearLayout构造函数中使用Inflater加载一个布局,并从中提取出相关的UI组件进行封装,形成一个独立的控件。在使用该控件时,由于它所有的子元素都是在运行时通过代码动态创建的,所以该控件只能以一个独立控件的形式在Layout文件中声明,例如:public class CustomLayout extends LinearLayout{原创 2016-07-09 15:04:03 · 7865 阅读 · 0 评论 -
Android真机调试打印日志的方法
使用模拟器效率是很低的,所以真机调试是多数开发者的选择。使用模拟器调试程序和使用真机调试程序还是有一些不同的。比如,某些手机在调试过程中,不会打印日志出来。真机调试不输出日志到logcat的原因是手机厂商默认关闭了调试打印的功能。按照下面的步骤打开日志输出功能即可解决此问题。我的机型是360奇酷青春版,算是酷派吧方法是:拨号盘输入*20121220# -> 选择日志输出级别 ->原创 2016-06-27 17:03:27 · 5628 阅读 · 0 评论 -
android 中TextView设置部分文字背景色和文字颜色
通过SpannableStringBuilder来实现,它就像html里边的元素改变指定文字的文字颜色或背景色public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sa原创 2016-06-24 18:28:40 · 6660 阅读 · 0 评论 -
Java设计模式-命令模式Command
定义将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。UML图:角色Command:定义命令的接口,声明执行的方法。ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。原创 2016-06-19 20:34:33 · 2484 阅读 · 0 评论 -
Android使用WebView加载网页
在AndroidManifest.xml设置访问网络权限:控件:<WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" />关键代码: mWebView=(WebVie原创 2016-06-15 18:11:27 · 16734 阅读 · 0 评论 -
Android项目创建欢迎页
1、制作一张启动图片splash.png,放置在res->drawable-hdpi文件夹中。2,布局文件<RelativeLayout xmlns:Android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="原创 2016-06-15 17:58:20 · 3778 阅读 · 0 评论 -
Android检查网络状态步骤
android 如何检查网络连接状态,是android开发中一个常见的问题。获取网络信息需要在AndroidManifest.xml文件中加入相应的权限: 1)判断是否有网络连接 public boolean isNetworkConnected(Context context) { if (context != null) { Connectivity原创 2016-06-15 17:51:42 · 5157 阅读 · 0 评论 -
Java设计模式-Proxy代理模式
问题分析:什么是代理模式呢?其实我们在生活中并不少见。对于程序员来说最常接触的莫过于代理上网了,连接大力服务器地址,就可以访问网络。还有每天吃饭赶进度是常事,叫公司的同事帮忙带饭也是一种代理;如果你辞职老板不给你发工资,那么你还得请个律师帮你打官司,这也是一种代理。总之生活中无处不在。代理的定义:为其他对象提供一种代理以控制对这个对象的访问。简单点就是在不直接操作访问对象的的情况下原创 2016-06-14 19:53:10 · 1690 阅读 · 0 评论 -
Android的Handler,Looper源码剖析
之前了解android的消息处理机制,但是源码看的少,现在把Looper,Handler,Message这几个类的源码分析一哈android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因此我没将其作为核心类Looper源码:Looper的字面意原创 2016-06-05 19:27:03 · 1551 阅读 · 0 评论 -
Android的Crash崩溃解决方案-Bugly的使用
我们在开发过程中,经常会遇到程序闪退,但是Eclipse的Consle和Logcat又没有错误提示,或者是只有用的时间长了才会出现的偶然崩溃,这种就很难修复bug,也严重影响用户体验,用户分分钟卸载。腾讯的Bugly可以在app出现崩溃的时候上传错误信息,定位错误原因和语句,并且可以查看影响的用户数和程序Crash次数等等信息下面说一哈Eclipse+Android时Bugly的配置和使用原创 2016-06-04 17:17:57 · 20447 阅读 · 0 评论 -
Android的Gson的使用方法,实现Json结构间相互转换
一,把数组,对象,List,Map等数据结构转换成Json字符串import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.g原创 2016-05-31 10:16:59 · 7723 阅读 · 0 评论 -
Java数据库连接池实现原理
一般来说,Java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc建立数据库连接; ③访问数据库,执行sql语句; ④断开数据库连接。public class DBConnection { private Connection con; //定义数据库连接类对象 private PreparedStatement pstm; pr原创 2016-05-29 16:33:02 · 32513 阅读 · 11 评论 -
Android中的AsyncTask异步加载图片
AsyncTask简介:AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行,这就有效地避免了使用Handler带来的麻烦。阅读 AsyncTask的源码可知,AsyncTask是使用java.util.concurrent 框架来管理线程以及任务的执行的,concurrent框架是一个非常 成熟,高效的框架,经过了严格的测试。这说明AsyncTask的设计很好的解决原创 2016-05-24 11:51:09 · 1851 阅读 · 0 评论 -
Universal-imageLoader缓存图片加载
一,先要配置ImageLoaderConfiguration这个类实现全局ImageLoader的实现情况ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this) .memoryCacheExtraOptions(480, 800) // max width, max he原创 2016-05-21 11:01:20 · 6271 阅读 · 0 评论 -
Java设计模式-工厂方法模式和抽象工厂模式
工厂方法模式定义:即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系1,一抽象工厂类派生出多个具体工厂类;2,一抽象产品类派生出多个具体产品类;3,每个具体工厂类只能创建一个具体产品类的实例。UML图:角色模块:1,抽象工厂类:工厂方法模式的核心,定义一个创建对象的接口2,具体工厂类原创 2016-05-13 19:17:23 · 5078 阅读 · 0 评论 -
Java的Executor框架和线程池实现原理
一,Java的Executor框架1,Executor接口public interface Executor { void execute(Runnable command); }Executor接口是Executor框架中最基础的部分,定义了一个用于执行Runnable的execute方法,它没有实现类只有另一个重要的子接口ExecutorService2,Exe原创 2016-05-09 17:22:50 · 23500 阅读 · 4 评论 -
Java设计模式-适配器模式Adapter
定义:“转换接口”将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。我理解的“一个类的接口”是被适配对象Adapteede 接口,“客户希望的另外一个接口”就是客户端已经的接口,因为客户端只能适应这一种接口,所以它期望这个接口实现目标:就是客户端Client希望通过这个原有的Target接口,实现被适配对象的新功能原创 2016-05-05 19:46:42 · 1263 阅读 · 0 评论 -
java设计模式-Builder创建者模式
问题分析:Builder模式是一步一步创建一个复杂对象的创建型模式。该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件的表示隔离开来。Builder模式 主要用于“构建一个复杂的对象”。把复杂对象的创建过程加以抽象,通过子类继承和重写方法,来得到具有复合属性的对象。同时为了统一创建过程,把对象的创建操作统一封装到Director的方法中。由于一个复杂对象的单个属性可原创 2016-05-02 20:19:14 · 4648 阅读 · 3 评论 -
java设计模式-单例模式
问题分析:首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以原创 2016-05-02 19:41:12 · 3817 阅读 · 0 评论 -
Android从网上下载图片
package cn.com.hh.http;import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import android.graphics.Bit原创 2016-04-05 20:42:11 · 1718 阅读 · 0 评论 -
解析XML方式-DOM,SAX
students.xml 张珊 22 王航 25 刘沙 26 张海 24 Person.javapackage xmldom;public class Person { i原创 2016-03-28 10:23:14 · 1255 阅读 · 0 评论