Android基础
文章平均质量分 79
xyTianZhao
当你的能力驾驭不了你的野心时,那么你该学习了、、、
展开
-
APP 启动优化
APP 启动优化我们 Android 开发永远也摆脱不了性能优化的需求,做的 App 就是给用户用的,随着功能的增加,App启动功能的丰富。点击启动图标时,我们的 App 启动会出现一个白屏页面。这个非常影响交互体验。这节我们就来看看怎么优化这里启动方式首先,我们来看看 App 的启动方式都有哪些冷启动程序从头开始,系统灭有为该程序创建进程。一般有两种场景:1. 程序安装后的第一次...原创 2020-03-02 14:53:46 · 260 阅读 · 0 评论 -
Android AIDL的简单应用
Android AIDL的简单应用概要AIDL(Android Interface Definition Language),从字面解释来看就是Android接口协议语言。如果是接口协议语言 那么就跟接口脱离不了关系。通过它我们可以定义进程间的通信接口。什么情况下使用AIDL你能看到这说明你已经知道AIDL是为了跨进成通信使用的。但是已经有了广播、ContentProvider等都可以进行跨进程通原创 2017-03-16 21:44:26 · 449 阅读 · 0 评论 -
多线程下载文件(支持暂停、取消、断点续传)
多线程下载文件(支持暂停、取消、断点续传)多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来即可。涉及的知识及问题请求的数据如何分段分段完成后如何下载和下载完成后如何组装到一起暂停下载和继续下载的实现(wait()、notifyAll()、synchronize原创 2017-02-23 15:31:09 · 15201 阅读 · 20 评论 -
Android自定义日历控件
概述日历有阳(公)历、阴(农)历之分,咱们从下面两个方面区分一下(当然,他们的区别还是挺多的,有兴趣的可以研究研究)月份的定义:阳(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28天每周的第一天:阳(公)历星期日是第一天;阴(农)历,星期一是第一天好了,咱们言归正传。日历翻译成英文就是Calendar,然而咱们平使用的是阳(公)历,翻译成英文就是GregorianCale原创 2017-03-28 22:36:51 · 4255 阅读 · 5 评论 -
Android自定义键盘的简单实现
自定义键盘的简单实现概述突然发现好多软件都使用了自己定义的软键盘。自己就想着先把这块坑先踩踩把,以后掉坑的时候不至于帅的太惨。言归正传,对于自定义软键盘。需要用到系统提供的两个类:Keyboard和KeyboardView。Keyboard设计键盘的布局文件,官方上对Keyboard是这么解释的Loads an XML description of a keyboard and stores the原创 2017-03-20 19:59:09 · 23864 阅读 · 10 评论 -
Android OpenGL ES2.0基础(二、画个三角形)
一、概要上节中了解了OpenGLES最简单的使用OpenGLES2.0基础,这节在深入一个层次了解怎么去画一个三角形。对于OpenGL绘图,最主要的就是Renderer的处理。因为GLSurfaceView相当于一个View,只是显示图像,而Renderer就是GLSurfaceView要显示的图像。在Renderer中主要有三个函数onSurfaceCreated(),onSurfaceCreat原创 2017-03-10 10:29:07 · 1771 阅读 · 0 评论 -
Android OpenGL ES2.0基础(三、Shader相关介绍)
原文链接:http://www.tuicool.com/articles/VZVJra 与OpenGL ES1.x渲染管线相比,OpenGL ES 2.0渲染管线中“顶点着色器”取代了OpenGL ES 1.x渲染管线中的“变换和光照”;“片元着色器”取代了OpenGL ES 1.x渲染管线中的“纹理环境和颜色求和”、“雾”以及“Alpha测试”。 这使得开发人员在使用Op转载 2017-03-10 10:30:42 · 1338 阅读 · 0 评论 -
Android OpenGL ES2.0基础(一、最简单的使用)
Android OpenGL ES2.0基础(一、最简单的使用)一、OpenGL ES是什么OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的3D图形库。广泛应用于游戏、娱乐、VR等领域.安卓系统中的核心库层就有这个。OpenGL ES是在OpenGL基础上针对移动端而裁剪的 。OpenGL ES由当初的1.0、2.0发展到现在的3.0了。我这个系列是针对2.0的.原创 2017-03-09 17:14:07 · 6200 阅读 · 0 评论 -
自定义收缩TextView
注:该文章参考于https://github.com/RayeWang/MyView 开启我的造轮子之路了,在我看来想要掌握一个新的知识都要经历这么几个阶段:了解-->抄袭-->模仿(改造)-->创造,而且自定义View对于码农来说是一个必须得掌握的一项技能get√,这个技能的难度还是挺大的(myStatus = 抄袭中)。这个将是我的一个开始,相信量变一定会引起质变。话转载 2016-07-29 18:49:39 · 1288 阅读 · 0 评论 -
HashMap实现原理分析
原文地址:http://blog.csdn.net/vking_wang/article/details/141665931. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表转载 2016-02-21 17:48:53 · 614 阅读 · 2 评论 -
为ListView打造万能适配器
一、概述 该适配器主要还是对adapter和viewholder进行了抽象和封装,使之能够在任何item下都可以运用。二、ViewHolder类package com.tianzhao.myutils.adapter;import android.content.Context;import android.graphics.Bitmap;import androi原创 2015-12-21 11:56:34 · 1426 阅读 · 4 评论 -
自定义ViewPage+底部指示器(广告图片轮播)
自定义ViewPage+底部指示器(广告图片轮播) 有不少项目都用到了广告图片的轮播,通过ViewPage来实现。每次都写一遍总感觉特别麻烦,今天就自己封装一个自带底部指示器的广告图片轮播CustomerViewPage。 整体View是是在一个RelativeLayout中布局,由ViewPage(广告View)+LinearLayout(底部指示器)组成。如下图原创 2015-11-26 00:14:12 · 3006 阅读 · 0 评论 -
Android内存泄漏——常见的内存泄露
JAVA是垃圾回收语言的一种,开发者无需特意管理内存分配。但是JAVA中还是存在着许多内存泄露的可能性,如果不好好处理内存泄露,会导致APP内存单元无法释放被浪费掉,最终导致内存全部占据堆栈(heap)挤爆进而程序崩溃。Java的内存JAVA是在JVM所虚拟出的内存环境中运行的,JVM的内存可分为三个区:堆(heap)、栈(stack)和方法区(method)。栈(stack):是简原创 2017-04-26 14:07:02 · 560 阅读 · 0 评论 -
Android底部弹出Dialog
一.简要先看看效果图把,点击中间的弹出对话框按钮,从底部弹出Dialog,我们可以选择拍照,选择相片,以及取消按钮二.实现首先先看看比较重要的两个文件把1.Dialog的布局文件dialog_layout.xml该布局文件主要是对弹出的Dialog进行布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:原创 2017-04-26 17:08:51 · 3295 阅读 · 0 评论 -
WebView与ListView滑动冲突——(一)事件基础篇
Android中的事件有很多种,从宏观上来讲我们最常见,最常用的就是onClick事件了,微观上来说就是onTouchEvent、onInterceptTouchEvent、dispatchTouchEvent等方法都具有MotionEvent参数,该Event即为用户一次行为的具体体现。如果其中某一个方法返回true,则代表改方法消费了该事件,则该事件将不会向下传递,其后的ACTION_MOVE、原创 2017-08-29 20:58:30 · 948 阅读 · 0 评论 -
Android 音频录制(三)-OpenSL ES
Android 音频录制-OpenSL ES相关推荐音频基础知识Android 音频录制-MeidaRecordAndroid 音频录制-AudioRecordAndroid 音频录制-OpenSL ES原创 2019-09-29 11:14:18 · 379 阅读 · 0 评论 -
Android 音频录制(二)-AudioRecord
Android 音频录制(二)-AudioRecordAndroid 系统为我们提供了三种录制音频的方式MediaRecord( Java API)AudioRecord( Java API)OpenSL ES( Native API)这次我们来说复杂一点的 AudioRecord。官方API 介绍我们在上节说的 使用MeidaRecord录制,系统已经为我们将数据处理完成,我们只...原创 2019-09-26 14:19:09 · 789 阅读 · 0 评论 -
音频基础知识
音频基础知识小时候看电视、听广播就在想,这里面的人在哪藏着呢,那么小的空间,咋藏的呢,他也不出来,就在里面瞎BB。直到后来我入了计算机的坑,才发现万事万物皆01。经过后来了解,发现一个声音源要变成 01 数据需要经过以下几个过程。自然声波->模拟信号->数字信号自然声波->模拟信号当我们说话时,麦克风会将自然声波处理转换成为声音的模拟信号。麦克风一般分为以下两种...原创 2019-09-26 11:18:31 · 484 阅读 · 0 评论 -
Android 音频录制(一)-MediaRecord
Android 音频录制(一)-MediaRecordAndroid 系统为我们提供了三种录制音频的方式MediaRecord( Java API)AudioRecord( Java API)OpenSL ES( Native API)这次我们先从最简单的 MediaRecord 说起系统提供的这个是最简单的录制 API。不用关心编码、不用操作字节码,所有的数据处理内部都已经实现,...原创 2019-09-25 20:49:36 · 506 阅读 · 0 评论 -
Paint 的ColorFilter(颜色过滤器)和 XFermode(图层混合模式)
Paint 的ColorFilter(颜色过滤器)和 XFermode(图层混合模式)ColorFilter-颜色过滤器顾名思义就是 Paint 画笔的颜色过滤功能。通过 setColorFilter(ColorFilter filter) 方法进行设置,该方法传入了一个 ColorFilter 对象,我们来看下这个是个嘛东东。/** * A color filter can be use...原创 2019-08-13 11:06:41 · 685 阅读 · 0 评论 -
Android水波纹效果
Android水波纹效果最近学习了 Paint 和 Canvas 的相关知识,自定义 View 实现了一个水波纹效果注释在代码里面已经补全了。直接看代码即可package com.wuba.demo;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import an...原创 2019-08-15 12:58:54 · 397 阅读 · 0 评论 -
Paint 详解
Paint 详解Android 中的 Paint 我们可以理解为画画中的画笔,画笔往往有多种颜色和粗细。Paint 只有一个,但是他可以设置相关属性,来实现各种画笔的特性。我们作画时是用画笔在画板上作画,这里的 Paint 就是我们的画笔,画板就是 Android 中的 Cavans 了,这节我们直谈 Paint,Cavans 就不过多介绍。常用 API我们列举出了 Paint 常见的一些 ...原创 2019-08-07 20:08:33 · 808 阅读 · 0 评论 -
Canvas 详解
Canvas 详解这节我们来看一下 Canvas 的相关知识,官方文档有详细的功能说明,这里我们简要了解一下几个常用的功能绘制文本、几何图形、位图接口功能drawText绘制文本drawLine绘制连线drawPath根据给定的Path,绘制连线drawPoint绘制点drawBitmap绘制位图位置形状变换接口功能...原创 2019-08-13 21:28:04 · 290 阅读 · 0 评论 -
UI 绘制流程及原理全过程解析
UI 绘制流程及原理全过程解析UI 绘制流程类文章在网上一搜一大把,但是都有一定的断层。比如只分析了View的三大流程 onMeasure 、 onLayout 、 onDraw ,但是这三个方法的调用链却没有描述。这篇文章就应运而生。Window 顶层 DecorView 身世我们都知道,通过 startActivity启动一个页面时,如果在 onCreate没有调用 setConten...原创 2019-08-01 11:23:28 · 1565 阅读 · 0 评论 -
View 的测量 MeasureSpec
View 的测量 MeasureSpec我们平常自定义都是重写 view 的 onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法,而这个方法传入的宽和高都是一个32位 int 值。下面我们揭开这层神秘的面纱。MeasureSpec 解析MeasureSpec 是位于 View 类中的一个静态类,也就 100 行左右。我们先来看其中...原创 2019-07-30 21:24:46 · 240 阅读 · 0 评论 -
WebView与ListView滑动冲突——(二)LinearLayout控制WebView滚动
上一篇我们大致了解了一下View中 事件的一些基础《WebView与ListView滑动冲突——(一)事件基础篇》,Scroll是为了实现View平滑滚动的一个Helper类,通常在自定义View中使用。 这次我们从一下几个方面来了解一下Scroll与VelocityTracker的用法:View和MotionEvent的位置信息View中的Scroll方法Scroll中的scroll*()方原创 2017-09-01 09:51:22 · 959 阅读 · 0 评论 -
使用Volley获取网络图片,并作本地缓存
使用Volley获取网络图片,并作本地缓存 Volley获取网络图片有多重方法,在这里我就介绍两种方式吧,一种是ImageRequest,另一种是ImageLoader毕竟就这两种常用。一、ImageRequest ImageRequest能够处理单张图片,返回bitmap。 这个没什么说的,就是Volley获取图片最基本的使用了。下面是ImageRequest的使用原创 2015-11-12 23:21:32 · 3069 阅读 · 1 评论 -
自定义气泡背景View
今天来实现一个自定义气泡背景:先来张图(那些泡泡会跑的。。。)看起来很高端?你要是这么想那你就输了,接下来就看看是怎么实现的。这个就是一个自定义View,其实自定义View也就是重写那么几个方法,onDraw(),onMeasure()。还是直接来看代码吧,注视里面都有的package com.tianzhao.myapplication;import android.cont原创 2015-10-26 22:16:19 · 2389 阅读 · 0 评论 -
Android的MVP模式应用(Login)
在开发Android应用时,一个偶然的机会看到有种MVP模式(Mode-View-Presenter),然后好奇的研究了下这个模式并尝试在现在项目中进行推广。下面就把自己目前学习到知识总结出来。一、MVP简介 我理解的MVP是由MVC优化衍生出来的一种模式,MVP将MVC中的Controller层进行了优化而生成了Presenter。Presenter单词翻译为“提出者;任命原创 2015-10-10 15:17:43 · 1637 阅读 · 0 评论 -
Android中的回调机制
从学习Android到现在,有意无意都会听到一个叫做回调机制的这么一个东东。例如Activity的生命周期函数就是通过回调机制来实现的,还有为控件添加监听事件时,所实现的接口也是通过回调机制来实现的。起初还真心不知道这是什么东东,到后来有的时候用到的时候也是直接用别人现成的代码,没有搞明白其中是怎么一个实现方式。今天就通过一个从网上下载图片,通过回调机制来通知更新UI的小例子学习了一下回调机制。原创 2015-05-11 22:49:25 · 625 阅读 · 0 评论 -
ListView实现下拉刷新
最近做的一个小东西,牵扯到了几个ListView的数据更新问题,几个数据之间有相互关系。就想到了ListView的下拉刷新了。 ListView的下拉刷新总共分为四个步骤: 第一步:添加提示界面,即ListView的header头布局; 第二步:监听ListView滚动事件,即onScrollListener()事件;原创 2015-05-11 00:54:26 · 1035 阅读 · 0 评论 -
BaseAdapter解决OOM问题
上次提到了本地图片的异步加载,但是当图片量过大的时候就会出现令人头痛的OOM了。后来查到通过ViewHolder可以优化Adapter,然后就搞了半天。弄好了以后发现还真心不错,而且还优化了上下滑动时卡顿现象,当时贼高兴了。再后来,我就狠心的不停上下滑,啊哦、、、OOM又出现了。最后得出结论--------有时候还真心不能对自个的程序太狠。所以,要狠就要对自个的代码狠,这次采用异步加载图片+Vie原创 2015-05-08 00:36:44 · 1454 阅读 · 2 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2015-04-25 21:42:24 · 400 阅读 · 0 评论 -
Animation简单的3D动画旋转
我只是想实现一个简单的3D旋转动画而已,但是在网上看了那么多都是很繁琐,找了半天才找到自己要用的那部分代码。直接抽取出来: import android.os.Bundle;import android.view.animation.Animation;import android.view.animation.Transformation;import android.widg原创 2015-04-25 21:54:41 · 2988 阅读 · 0 评论 -
始终让Scrollview始终显示底部
让ScrollView跳到指定行有一个方发是scollTo(int,int),但是你会发现谈根本就没有起作用,这是因为你在ScrollView加载完成之前就调用了这个方法,而这个方法是在ScrollView将内容加载完成之后调用才可有效的,所以可以通过下面的方法来解决。 sl = (ScrollView) findViewById(R.id.chat_sl); sl.post(new R原创 2015-04-20 15:08:37 · 2568 阅读 · 0 评论 -
聊天内容的动态加载
这两天写了一个小Demo,有一个功能就是聊天,然后涉及到了View的动态加载,下图就是动态加载后的效果 话不多说,直接上代码。 1、聊天界面的部分布局文件,使用ScrollView将聊天内容包裹起来,当内容超出界面显示时,可以上下滑动。 <ScrollView android:id="@原创 2015-04-20 15:46:48 · 639 阅读 · 0 评论 -
Android软键盘弹出,底部Menu上移
当点击输入文本框时,底部的菜单栏会跟随软键盘上移至软键盘的顶部,这样的效果看起来很不美观。 方法一、 在AndroidManifest.xml文件中找到相应的activity添加下面的属性 1、android:windowSoftInputMode="stateVisible|adjustResize",这个会使屏幕整体上移。原创 2015-04-20 15:29:01 · 1820 阅读 · 0 评论 -
EditText默认不弹出软键盘
在Android开发中,有时进入到一个有编辑框的页面时,软键盘会自动弹出来,这样会非常影响用户的体验。下面就是怎样设置默认不弹出软键盘。下面就是怎样设置默认不弹出软键盘。 方法一、 在AndroidManifest.xml文件中选择相应的activity,设置android:windowSoftInputMode="adjustUnspecified|stateHid原创 2015-04-20 14:48:52 · 950 阅读 · 0 评论 -
Android中的dp和px之间的相互转换
一般情况下,我们经常要在java代码中设置一些布局文件的大小。如字体大小的设置、ImageView大小的设置,以及动态加载布局文件时的位置等。但是在java代码中设置的数字大多数情况下是以px为单位的(用px位单位会产生什么后果我就不多说了,后果你懂的。)所以,在代码中可以根据当前手机的分辨率将px转换成dp; 1、将dp转换成px public int dipToPx(float d原创 2015-04-19 21:40:26 · 992 阅读 · 0 评论 -
安卓的动画效果
一、AnimationSet的使用 1、什么是AnimationSet 二、Interpolator的使用方法 1、什么是Interpolator 2、Interpolator的使用 ·xml代码原创 2015-03-11 00:14:29 · 532 阅读 · 0 评论