Android 学习笔记
文章平均质量分 83
chenjie19891104
专业方向:web开发,Android移动开发
展开
-
Android App Bundle 自动打包原理
Google推出Android App Bundle 已经有一段时间了。 根据Google的政策说明 ,预计2021年8月之后,新发布的应用都必须使用Android App Bundle(aab)来上架Google Play Store了。对于Android App Bundle的原理,Google官方文档已经有了很详细的介绍, 想了解的同学建议直接阅读Google的官方文档。如果你是使用Android Studio打包,那么你直接在Android Studio中选择构建App Bundle即可将应原创 2021-02-06 09:46:01 · 3278 阅读 · 3 评论 -
说说Android桌面(Launcher应用)背后的故事(三)——CellLayout的秘密
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我CellLayout的设计主要为了存放大小不一的控件。为了更好的控制item的添加和删除,选择直接继承ViewGroup来实现该控件。我们长按桌面的时候,有两种情况,一种是我们按的是一个item,还有一种是我们按的是一个空原创 2011-11-24 17:18:46 · 28169 阅读 · 16 评论 -
作为一个移动应用开发者,我们的创意应当避免走向低俗
随着移动开发浪潮的袭来,涌出了大批的移动开发者。特别是Android弄潮儿的到来,迅速引领着浪潮走向巅峰。纵观各大移动平台,可谓android属最热。各大应用商店层出不穷,各种移动应用和游戏也是络绎不绝。因此,应用商店中的名次排名的交相更替,就表现为各大应用开发者之间的角逐,形式的激烈,犹如无尽的没有硝烟的战争。。。 作为Android应用开发者中的一员,我除了技术,平时很少有其他的闲原创 2011-10-29 08:18:03 · 3662 阅读 · 2 评论 -
Android自定义控件之我的电话小键盘
关于Android的自定义控件,之前也写了两个,一个是简单地继承View,另一个通过继承Layout实现一个省市联动控件。这篇,将通过继承ViewGroup来实现一个电话拨打小键盘。本人一贯风格,懒得罗里吧嗦讲一大堆,直接上图上代码,一切尽在注释中!1、M原创 2011-09-21 11:15:14 · 10801 阅读 · 7 评论 -
Android学习系列(4)--App自适应draw9patch不失真背景(我见过最全的)
<br />关于draw9patch如何使用,介绍的很详细,图文并茂,收藏下,备忘!<br /> <br />http://www.cnblogs.com/qianxudetianxia/archive/2011/04/17/2017591.html转载 2011-04-24 10:19:00 · 3530 阅读 · 0 评论 -
Android打造个性十足的组件技术之复合组件
在Android中,我们可以通过继承View来打造完全如我们所愿的组件,但是,有的时候,我们需要的组件是一个由现有的几个组件的组合实现的,那么我们就可以利用组件合成技术,呵呵,这个名字我自己起的。在Android中打造复合组件,其实只需要继承Layout或者其子类,比如LinearLayout等,然后在其中定义需要完成该功能的现有的几个组件。然后定义一个监听器(就是一个简单的接口,暴露给用户使用,获取返回的数据,给用户使用)本文通过使用两个Spinner来打造一个省份城市信息联动的选择控件,省份和城市信息的原创 2011-04-23 12:01:00 · 8809 阅读 · 16 评论 -
Android JNI学习之NDK_r5的使用简记(和r4之前有点区别)
<br />自NDK r4版本后,不再需要在apps目录下建立工程了,也不再使用make APP=工程名方式来编译生成.so本地库了。<br /> <br />在NDK r4版本后,使用的是ndk安装目录下的ndk-build脚本来实现编译。关于ndk-build的使用,文档中说是,在cygwin中进入项目的所在路径,然后使用$NDK/ndk-build来实现编译。<br /> <br />注意到上面使用了$NDK,这是NDK安装目录在cygwin中的环境变量。<br /> <br />下面就简单记录下如何原创 2011-04-25 16:35:00 · 3180 阅读 · 0 评论 -
Android JNI学习之javah命令的正确使用(找了好半天才找到的,汉,网上好多说法都没用)
<br /> <br />按照网上抄来的javah用法一般出错,今天查了一下午在一篇文章(http://www.ibm.com/developerworks/cn/java/j-jtctips/part6/index2.html)中看到:“Javah 获取您的 Java 源文件并生成 C 头文件,其中包含您的 Java 代码中所有本机方法的 JNI 存根(stub)。如果您正在生成一个类的 JNI 存根,而且您已经把这个类定义为包的一部分,那么您 必须指定完全限定的类名。”<b转载 2011-04-25 13:28:00 · 20258 阅读 · 1 评论 -
Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)
<br />关于如何安装配置Cygwin,如何安装ndk网上搜搜一大片,这里不再赘述。下面主要对这个简单的JNI实例的实现,做一个记录。<br /> <br />注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里说明下。<br /> <br />1、在ndk安装目录的apps下建立一个工程文件夹JniDemo,在该文件夹下建立一个project文件夹,和一个Application.mk文件。<br /> <br />2、在eclipse创建一个Android项目,指定项目路径为pro原创 2011-04-25 15:04:00 · 6103 阅读 · 1 评论 -
Android多媒体学习十五:使用在内置的Camera录制视频
<br />使用Android自带的Camera应用来录制视频也很简单。直接指定一个ACTION_VIDEO_CAPTURE的Action就可以了,和Image类似<br /> <br />代码:<br /> <br />package demo.camera;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import an原创 2011-04-21 17:00:00 · 10138 阅读 · 1 评论 -
Android多媒体学习十一:实现仿百度图片查看功能
<br />我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在<br />大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片。现在我们看看在Android中如何实现类似的效果:<br /> <br />首先,我们需要有一个控件来显示缩略图,这里没有什么比GridView更加合适了。<br /> <br />配置文件如下:<br /> <br /><?xml version="1.0" encoding="utf-原创 2011-04-20 16:37:00 · 19806 阅读 · 26 评论 -
说说Android桌面(Launcher应用)背后的故事(一)——揭开她神秘的面纱
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 最近由于项目需要自己定制一套管理系统,遂想到了Android的启动器,下来了源码,一编译到处是错,查了查原因,原来是引用了自家的成员,他们家开发的就是方便,想直接用就直接用。于是下载了个包,终于错误少了一大原创 2011-11-16 22:28:12 · 17457 阅读 · 9 评论 -
说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 前面说了Layout最主要的职责就是负责item的布局和空间的分配,这一节我们继续来看看CellLayout的父亲控件Workspace。手机的桌面是由几个屏幕的,你可以任意滑动的。这个布局就是一原创 2011-11-26 15:05:17 · 18573 阅读 · 8 评论 -
说说Android桌面(Launcher应用)背后的故事(八)——让桌面的精灵穿越起来
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 有了前面的工作,基本上这个桌面就已经像模像样了,但是,和系统自带的Launcher相比,还差得很远。其中,系统Launcher的桌面上的item是可以任意穿越(移动)的。同时,在其穿越的过程中,你原创 2011-12-16 09:32:13 · 7279 阅读 · 8 评论 -
游戏平台SDK设计和开发之旅——XSDK功能点梳理
做游戏开发或者相关工作的同学,可能都知道,在游戏上线之前,需要将游戏分发到各大渠道平台,比如九游,百度,360,华为等等。其中和技术相关的事情,就是要在游戏中接入这些渠道平台的平台SDK,平台SDK中一般会提供登录和支付相关的接口,需要游戏来调用。但是现在的游戏行业,除了渠道平台, 很多发行商,甚至CP(游戏研发商)自己也开始研发自己的平台SDK,因为对于一款游戏来说,除了上各大主流的渠道平台之外原创 2017-10-22 10:37:07 · 9486 阅读 · 5 评论 -
教你快速高效接入SDK——iOS多渠道自动打包工具核心原理
在说Android打包工具原理的时候,我们说到了U8SDK整套框架的核心设计思想。针对N款游戏,我们让渠道SDK的接入成本始终控制在1,而不是N。这就是U8SDK Android版本和iOS版本的核心设计原则,所有的设计,就本着这个宗旨来实现。但是,为了适应几十家几百家渠道,同时又不能破坏这个原则,这就要求我们的框架足够的灵活,足够的可扩展。之前Android打包工具核心思想(穿越到Android打原创 2016-07-31 16:14:40 · 6906 阅读 · 0 评论 -
Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
<br />AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实现一个AudioRecord的音频录制程序也很<br />简单。本实例代码如下:<br /> <br />可惜,本实例测试时有个问题,在录制的时候,会出现buffer over。缓存泄露,待解决。<br /> <br /> <br />package demo.camera;import java.io.BufferedInputStream;import java.io.Buffe原创 2011-04-19 14:47:00 · 60233 阅读 · 35 评论 -
ULog远程日志——让Android调试更加方便直观
在发布U8SDK之后,使用U8SDK做SDK接入的同学,反馈比较多的一个问题就是调试困难。这其实不是U8SDK的毛病,而是Android开发的通病。做Android开发,我们通常都是结合logcat来调试,如果是原生的应用,有时我们还可以直接通过Debug断点来调试,但是,做游戏开发,我们一般采用U3D,Cocos2dx游戏引擎开发之后,发布到对应的移动平台。所以,断点调试就不太好实现了。很多时候,原创 2016-02-02 12:02:41 · 7200 阅读 · 2 评论 -
教你快速高效接入SDK——Unity统一接入渠道SDK(Android篇)
U8SDK的设计之初,就是为了能够支持各种游戏引擎开发的游戏,而不仅仅是Android的原生平台。目前一大半的手游,都是采用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用Unity开发的游戏,如何通过U8SDK来快速地完成多家渠道SDK的接入。Unity研发的手游,只需要调用U8SDK抽象层即可完成多家渠道SDK的接入,而不需要在Unity中耦合各个渠道S原创 2015-07-30 08:39:07 · 33596 阅读 · 5 评论 -
说说Android桌面(Launcher应用)背后的故事(九)——让我的桌面多姿多彩
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 到这里我们的Launcher已经可以跑起来了,而且效果也如系统Launcher一般,但是,遗憾的是,我们的桌面上似乎都是一个摸样的Shortcut,而再看看系统桌面上,Search框,天气控件啊,各种大小参差不齐,界原创 2011-12-19 17:36:34 · 8009 阅读 · 3 评论 -
说说Android桌面(Launcher应用)背后的故事(五)——桌面壁纸的添加
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我上一篇中,我们了解了Workspace是如何处理多个CellLayout之间的滑动的。这篇,将记录如何将壁纸添加到桌面,以及Workspace如何处理滑动的时候,壁纸的滑动。壁纸的添加,也是调用系统自带的,用如下方式调用:原创 2011-11-30 15:15:23 · 15733 阅读 · 5 评论 -
说说Android桌面(Launcher应用)背后的故事(七)——又是一个附属品(可以转动的绚烂饼图)
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我本来这一篇应该还是写Launcher中item拖拽的实现原理的,奈何,自从研究了Launcher,以前没有实现的,现在灵感全来了。这不,一个月前看到了著名记账软件随手记,看到android版中有一个炫酷的可以旋转的统计饼图,当原创 2011-12-02 22:06:31 · 9819 阅读 · 11 评论 -
说说Android桌面(Launcher应用)背后的故事(六)——研究Launcher而实现的附属品(可以拖拽的ListView)
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 本来这一篇将写Android中Launcher是如何实现桌面上item的拖拽的,当研究了其机理之后,突然大脑发热,想实现一个可以拖拽的ListView,在理解了Launcher中item的拖拽,再来实现可原创 2011-12-01 17:18:56 · 8779 阅读 · 4 评论 -
说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇
博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我前一篇中,演示了如何开发一个Widget以及如何开发一个WidgetHost应用。有了这个基础,我们就知道,要想在桌面上添加Widget,那么需要完成两件事情:1、将桌面应用实现为一个WidgetHost应用2、CellL原创 2011-12-27 15:25:10 · 11249 阅读 · 12 评论 -
Android多媒体学习十三:检索MediaStore中的Video和其对应的缩略图信息
<br />和Image,Audio一样,在Android中,Video信息也被MediaStore管理着。<br /> <br />和每个视频对应的有其一个缩略图,这个缩略图往往是其第一帧的图像。<br /> <br />下面看代码:<br /> <br />package demo.camera;import java.util.ArrayList;import java.util.List;import android.app.ListActivity;import android.c原创 2011-04-21 16:00:00 · 34805 阅读 · 18 评论 -
Android多媒体学习十四:播放网络上的视频
<br />Android支持播放网络上的视频。在播放网络上的视频时,牵涉到视频流的传输,往往有两种协议,一种是HTTP,一种是RTSP。这<br />两种协议最大的不同是,HTTP协议,不支持实时流媒体的播放,而RTSP协议就支持。<br /> <br />Android中自带的播放器,以及VideoView等都支持上述两种协议,因此,可以直接播放网络上的视频,唯一不同的就是URI。<br /> <br />代码如下:<br /> <br />package demo.camera;import an原创 2011-04-21 16:04:00 · 32152 阅读 · 26 评论 -
OpenGL ES之GLSurfaceView学习四:Android Demo里的Cube分析
关于android中Cube的绘制,可以看出一个3D图像的绘制机制。本文分析了Cube对象。需要用到两张图片:第一张是立方体顶点顺序和位置图,第二张是三角面示例图。package com.example.android.apis.graphics;import java.nio.ByteBuffer;import java.nio.ByteOrder;import java.nio.IntBuffer;import javax.microedition.khronos.opengles.GL原创 2011-04-09 11:20:00 · 10202 阅读 · 3 评论 -
OpenGL ES之GLSurfaceView学习三:交互式的实例
import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;import android.app.Activity;import android.content.Context;import android.opengl.GLSurfaceView;import android.os.Bundle;import android.view.MotionEv原创 2011-04-09 09:50:00 · 12127 阅读 · 0 评论 -
OpenGL ES之GLSurfaceView学习二:非交互式的实例
使用GLSurfaceView开发3D应用时,如果是非交互式的应用,可以直接使用GLSurfaceView。如果需要交互式的行为,则需要继承GLSurfaceView并重写一些方法。交互式应用示例见下篇。import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;import android.app.Activity;import android.opengl.GL原创 2011-04-09 09:14:00 · 10390 阅读 · 1 评论 -
OpenGL ES之GLSurfaceView学习一:介绍
<br />原文地址::http://120.132.134.205/cmdn/supesite/?uid-5358-action-viewspace-itemid-6527<br /> GLSurfaceView是一个视图,继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。 GLSurfaceView提供了下列特性: 1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。原创 2011-04-09 09:11:00 · 53679 阅读 · 3 评论 -
JNI学习之步步深入四--皇后的祝福
上篇中简单介绍了,java中的类型和C中的类型的映射的,本篇将以一个无聊的实例来看看JNI中数组的使用。皇后的祝福,思路很简单,就是利用我们耳熟能详的把皇后问题结合JNI来实现一点点小小的乐趣,在快乐中学习JNI。。。。1、用C语言实现八皇后的算法,我们知道八皇后有92种解,每种解是一个数据,对应这当前这组解中八个皇后的位置。2、在java中通过JNI调用c中的方法,获取八皇后的解。3、在java端完成一些随机性的提示信息。下面请看代码:1、首先,在java端定义一个接口Queen.java,只有一个方法,原创 2011-05-27 14:54:00 · 7344 阅读 · 9 评论 -
JNI学习之步步深入三
<br />上一篇中,学习了jni中的类型映射关系。本篇就一个简单点的实例来看看java端的类型,如何被C端识别。同时,在C端实现定义的一个类型<br />如何传递到java端。本篇以String类型为例,看看java端的unicode编码的String类型如何和C端utf-8编码的char*类型进行交互!<br /> <br /><br /> <br /> <br />1、首先,在java端写一个Prompt类:其中定义一个getLine方法,他含有一个String类型的参数,同时,返回String类型。原创 2011-05-25 14:18:00 · 7000 阅读 · 5 评论 -
JNI学习之步步深入二
JNI为了扮演在c/c++和java之间的匹配工作,它首先需要做的就是既要认识java中的数据类型,也要认识c/c++中的数据类型。这时,jni就相当于一个适配者了。好比,A与C两个人本来不认识,可是现在B认识A,B也认识C,那么通过C的指引和介绍,A和C就认识了!那么jni如何做到既认识C/C++,也认识java呢?其实很简单,一张匹配表足矣,见图!1、原始数据类型的匹配:其中jni中的本地类型都是以j开头,可以在c/c++中直接和c/C++类型互通互换!2、复杂数据类型的匹配:几种复合数据类型,主要是字原创 2011-05-23 21:14:00 · 9181 阅读 · 8 评论 -
JNI学习之步步深入一
从接触Android的一段时间后,就经常听到JNI这个东东,刚开始,不知是由于对新事物的排斥,还是根本不把它当成一回事,就没有特地地去理他。只是在活跃的社区中零零散散地看到JNI的身影,大致知道所谓的JNI,就是一种不纯的JAVA编程技术,还需要把C/C++给扯进来。这下好了,看到需要C/C++,立马想到的是,有多远离多远。倒不是因为C/C++做过神马恐怖的勾当,而是本人C/C++技艺不精。自此,选择了逃避。 直到,面临毕业,稀里糊涂地投了一份应聘Android软件开发的岗位。当接到面原创 2011-05-11 17:14:00 · 21198 阅读 · 8 评论 -
AsyncTask 学习翻译并总结
<br />最近闲来无事,遂看了一下android文档<br />其中AsyncTask类以前未用过,这里学习并记录一下:<br /> <br />AsyncTask ,见名知意,就是异步任务的意思。android为什么要提供这个类呢?自然有他的妙处和巧处。<br /> <br />我们知道,在android中非UI线程是无法对UI进行操作的,而比较耗时的任务,我们一般考虑到UI卡死,不会直接放在UI线程中来完成,而是<br />另开辟一个线程来完成这个耗时的任务。这样,在另一个线程中当任务完成时,需要将任原创 2011-03-23 16:46:00 · 3067 阅读 · 0 评论 -
Android错误之"source not find"
<br />刚刚开始测试Activity之间数据传递时,写了两个Activity,数据共享是通过SharePreferences完成。但是运行时,会<br />出现应用程序意外终止的异常。通过Logcat调试,得知,原来Activity.findViewById()没有获取到View。<br /> <br />查看View的id也正确,没有错误。后来恍然大悟:<br /> <br />看如下代码:<br />public class MainActivity extends Activity {原创 2010-11-21 15:12:00 · 3619 阅读 · 3 评论 -
Android自定义View之一:初探实例
<br />Android自定义View实现很简单<br />继承View,重写构造函数、onDraw,(onMeasure)等函数。<br /> <br />如果自定义的View需要有自定义的属性,需要在values下建立attrs.xml。在其中定义你的属性。<br /> <br />在使用到自定义View的xml布局文件中需要加入xmlns:前缀="http://schemas.android.com/apk/res/你的自定义View所在的包路径".<br />在使用自定义属性的时候,使用前缀:属性原创 2011-04-11 15:23:00 · 27790 阅读 · 12 评论 -
Android多媒体学习三:实现自己的Camera
<br />Android自带的Camera应用虽然可以满足大多数情景,但是其灵活性上还有不足。但是Android允许我们定制自己的Camera。<br />在Android的hardware包中有一个Camera类。这个类就是获取Camera服务的,可以定制Camera等。<br />可以通过open()方法获取其实例。<br />在使用这个类是需要在AndroidManifest.xml文件中加入相应的权限和特性<br /> <br />如:<br /> <uses-permissionandroid:原创 2011-04-13 17:17:00 · 17604 阅读 · 0 评论 -
Android自定义View之二:Matrix初探(懒了,使用拿来主义了)
<br />原文地址:http://java-admin.iteye.com/blog/792217<br /> <br />Matrix,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。<br /> 首先介绍一下矩阵运算。加法和减法就不用说了,太简单了,对应位相加就好。图像处理,主要用到的是乘法。下面是一个乘法的公式:<br /><br /> <br />在Android里面,Matrix由9个float值构成,是一个3*3的矩阵。如下图。<br />转载 2011-04-11 16:14:00 · 14230 阅读 · 2 评论 -
Android多媒体学习十二:Android中Video的三种播放方式的实现
<br />在Android中,我们有三种方式来实现视频的播放。<br /> <br />1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。<br /> <br />2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。<br /> <br />3、使用MediaPlayer类和SurfaceView来实现。这种方式最灵活,也最复杂。<br /> <br />下面给出这三种方式,<br原创 2011-04-21 11:29:00 · 46312 阅读 · 5 评论