自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

持剑

深度,想法,执行力

  • 博客(112)
  • 资源 (26)
  • 收藏
  • 关注

原创 Java并发系列之volatile

讲到Java并发,多线程编程,一定避免不了对关键字volatile的了解,那么如何来认识volatile,从哪些方面来了解它会比较合适呢?个人认为,既然是多线程编程,那我们在平常的学习中,工作中,大部分都接触到的就是线程安全的概念。而线程安全就会涉及到共享变量的概念,所以首先,我们得弄清楚共享变量是什么,且处理器和内存间的数据交互机制是如何导致共享变量变得不安全。共享变量能够在...

2018-05-31 00:11:49 410

原创 Java并发系列之Synchronized

每一个刚接触多线程并发编程的同学,当被问到,如果多个线程同时访问一段代码,发生并发的时候,应该怎么处理?我相信闪现在脑海中的第一个解决方案就是用synchronized,用锁,让这段代码同一时间只能被一个线程执行。 我们也知道,synchronized关键字可以用在方法上,也可以用在代码块上,如果要使用synchronized,我们一般就会如下使用:public synchroniz...

2018-05-31 00:09:30 6530

原创 Android中使用Retrofit库进行Http通讯

关于Retrofit2的使用流程

2016-01-14 17:00:11 1588

原创 好记性不如烂笔头(三)

SwiftHTTP发送Http请求刚学 iOS,利用SwiftHTTP来发送Http请求,就遇到一个坑,还是得记一下,以便以后回顾及查找: func postWithSwiftHTTP() { let url = "http://ip:port/api" let params = ["param" : paramTextField.text!]

2016-01-05 18:53:13 944

原创 iOS开发学习笔记(零)

创建firstapp项目,在Xcode上可见到以下的项目结构。项目结构firstapp AppDelegate.swiftViewController.swiftMain.storyboardAssets.xcassetsLaunchScreen.storyboardinfo.plistProducts firstapp.app描述说明简单地描述一下各个文件的作用:AppDel

2016-01-05 12:23:41 962

原创 Git Tag 的使用

Git 提供了一个叫 tag的东西,即标签。作用每一次commit都会生成一串字符ID,如下所示: commit 7f2de2b2560e5d0623d64ef56f2128ed4ab532e0这在正常的开发流程中没有什么问题,也不会去关心,但是等我们要发布的时候,或者已经发布了几个版本之后,要找回之前发布的版本到底是在哪个提交呢?记住这串id吗? No way! 标签 (tag) 的作用就在

2015-12-31 10:27:21 1527

原创 关于一个App的架构思考

对于一个App来说,不管大小,我们在开发的过程中或多或少,都会碰到下面罗列的各种模块,需要我们去处理。业务处理,对用户输入的校验和展现判断等统计处理,对当前App或者对业务的数据统计等UI效果,包括主题配置,按钮,输入框,动画效果,自定义控件等更新升级,当前App的检查更新等服务器通信,与服务器通信获取数据,心跳连接等数据解析,比如对json,对xml等的解析等分享处理,分享到微信朋友

2015-12-23 12:34:39 1620

原创 RecycleView的基本使用方法

为什么要使用RecycleView,而不再使用ListView记得每一次在用ListView的时候,在Adapter中,总是需要我们自己去创建一个ViewHolder,去存储ListItem的布局,这么做的原因在于findViewById()是一个很耗时间的操作,所以我们需要一个静态的对象将layout过的控件给保存起来,下一次刷新这个item的时候,就不再需要调用findViewById去View

2015-12-22 18:28:37 5581 1

原创 好记性不如烂笔头(二)

获取手机wifi信息 /** * 获取Wifi的Mac地址 * @param context * @return */ public static String getWifiBssid(Context context) { WifiManager wifi = (WifiManager) context.getSystemServ

2015-03-21 17:19:27 1569

原创 对于Canvas和Bitmap的一点认识

在Android关于Canvas的API描述中,一开始就如下描述: To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.

2015-03-14 14:47:11 3169 4

原创 好记性不如烂笔头(一)

获取系统设置状态 我们可以通过Settings.System类来获取到一些系统设置的状态,所以我们可以通过以下代码来获取系统的状态,比如ACCELEROMETER_ROTATION 等,不过有一点要注意的就是,Android的ROM太多了,不同的厂商可能会直接改掉Android的实现,然后自己实现一套,然后,就崩了。 所以在真正处理的时候,我们需要去捕获异常,保证代码的健壮性。/*** 获取

2015-03-14 10:39:37 1390

原创 好记性不如烂笔头(零)

俗话说,好记性不如烂笔头! 在平常的开发工作中,很多时候我们都会用到一些代码量比较小,但是却很有用的功能,但是,都只是写过就算,下一次再想起来用的时候,已经不知道该去哪儿找了。 常常因为这些小点而浪费时间,也随着年纪渐长,智商有限,还是靠记下来,以备不时之需呀。获取圆形图片 /** * bitmap 要进行剪裁的位图 * size 剪裁的圆形图片的大小 */ p

2015-03-03 15:25:40 1242 1

原创 利用自定义View实现头像截取页面

那么,如何制作这样一个效果呢,关键点在哪里呢?做法其实可以有多种,1)可以直接继承ImageView,然后在ImageView的OnDraw函数中直接绘制圆形或者方形的高亮圈;2)也可以直接继承View,自己将Bitmap给传进来,在onDraw函数中先绘制图片,接着利用Path来绘制这个圆形或者方形的选择区域,利用Region.OP.DIFFERENCE来反向获取蒙板层。不过利用clipPath来实现这个蒙板层的绘制,画出来的圆形会有锯齿,这个目前我还没有找到比较好的办法去掉这个锯齿,不知道有没有

2015-02-28 18:28:50 1532

原创 Android学习小Demo(23)Aidl实现进程间通信

我们知道,Android是靠Binder机制来实现进程间的通信,而上一篇文章中,我们利用AIDL,简单地从代码方面的角度讲解了在服务端中的Binder的存在形式,是以服务的实现存在的,而在客户端,则是以代理的形式,实现存在的只是一个关于服务端的Binder实现的引用。理论上的东西我们要去学习掌握,但是也不能忽略了实际的动手能力,对吧。今天,我们就一步一步地利用我们所了解地关于AIDL的知识,并且实现我们自己的小Demo。

2015-01-18 15:56:14 2962

原创 跟面试官讲Binder(二)之关于AIDL的认识

面试官开口说:“听你刚才所说,在Android系统中,都是利用Binder来进行进程间通信的,那我怎么听说,还有利用AIDL来实现进程间通信的呢?”。其实,AIDL只是一种描述性语言,其全称是Android Interface Definition Language,即接口定义语言,利用ADT,我们可将自定义的AIDL文件转化成Java代码,而这些代码就能够来进行进程间通信(IPC)。为什么这些代码就能够进行IPC呢?那是因为,这些代码就是定义了Binder机制中作为服务端的Binder对象和客户端中用的

2015-01-06 00:14:27 5103 3

原创 Android学习小Demo(22)带删除按钮的TextView

我们创建了一个ClearableTextView,继承于TextView,关键的代码如下:1)设置CompoundDrawables。2)必须重载onTouchEvent方法。这是因为在TextView中设置四边的图标时,并没有提供其对应的点击事件,所以这就需要我们自己去拦截用户的点击事件,判断用户的点击区。。。3)定义一个接口,用来由外部实现,可在图标点击事件时触发处理,如下:4)为了让文字不存在的时候,删除按钮不出现,我们可以自己定义一个setTextClearable方法,里面包装了Text

2014-11-29 14:19:43 4570

原创 跟面试官讲Binder(一)

1)Server启动了,他要创建一个Binder实体,它的句柄是0,比如BpBinder(0),当设置了BINDER_SET_CONTEXT_MGR,驱动收到这个命令,它就知道是要将当前进程设置为ServiceManager,于是它就会当前这个Binder实体创建一个Binder节点(BinderNode),它在这里记录了 0 -> ServiceManager这样的mapping。2)另一个Server启动了,它也会创建一个Binder实体,名字叫 XXXManagerService吧,但是它的句柄就不

2014-11-26 17:16:00 4498 11

原创 关于ThreadLocal的一些认识

可以看到,其是从current这个线程里去获取Values对象的,而如果不存在这个对象,其就会调用initializeValues方法,为线程的localValues创建一个新的Values对象。最近再调用values的put方法,以当前ThreadLocal对象为key值,将我们的valule给存放到这个Values对象中,我们会马上意识到,Values实现的应该是一个类似Map的键值对的数据结构。从这里,我们就可以意识到:1)在每个线程中都存在一个Values对象。2)无论我们在哪个线程中调用T

2014-11-07 15:44:19 1509 2

原创 Android中利用Handler实现消息的分发机制(三)

说到代码的可读性,有时候,我们更加看重代码之间的层次或者说模块化,耦合度等特点。不同的业务逻辑,不同的功能,应该实现在不同的模块中,而模块与模块之间就可以通过一个消息来通信,而这种消息通讯方式,我们就可以利用Handler和HandlerThread来实现。比如,最近做的一个浏览器的小Demo,其类图如下:...在不同的模块实现中, 我们可以调用registerHandler方法,将其对象的Handler注册到MessageDispatcher中,然后通过sendMessage方法,指定对应的目标,

2014-10-28 17:55:31 2169

原创 Android中利用Handler实现消息的分发机制(二)

在这篇文章开始前,我们先总结一下前两篇文章中关于Handler, Looper和MessageQueue等的一些关键点:0)在线程中创建Handler之前,必须先调用Looper.prepare(), 创建一个线程局部变量Looper,然后调用Looper.loop() 进入轮循。1)当Handler创建之后,就可以调用Handler的sendMessageAtTime方法发送消息,而实际上是调用MessageQueue的enqueueMessage方法,将对应的消息放入消息队列。2)每一个线程都只有

2014-10-28 11:31:34 2008 1

原创 Android中利用Handler实现消息的分发机制(一)

这两个的差别就在于是否有参数Looper,而Looper是一个线程相关的对象。何谓线程相关的变量?就是线程间不能共享的对象,只在本线程内有作用的对象。那么Looper对象的作用是什么?从我个人的理解,Looper类就是对MessageQueue的封装,它主要做的是两件事:1)构造Looper对象,初始化MessageQueue,我们可以从其构造函数看到:可以看到,Loop对象被创建之后,会被放到ThreadLocal变量中,而ThreadLocal正是线程局部变量,这说明了关于Looper的一个特

2014-10-27 16:55:54 2973

原创 Android中利用Handler实现消息的分发机制(零)

在之前一篇介绍AsyncTask的文章中,我们在最后讲到,AsyncTask是利用Handler的消息异步处理机制,将操作结果,利用Message传回主线程,从而进行UI线程的更新的。而在我们日常的开发工作中,Handler也是我们经常使用的类之一,那么Handler的主要作用是什么?Handler 的主要作用就是对消息(消息可以是我们想做的一些UI更新,也可以是其他的一些不可见的操作,如操作数据库等)的异步处理机制,而相信大家都了解异步的概念。简单地说一下:1)从程序的角度来看,就是当执行某行代码

2014-10-27 15:42:35 2196

原创 关于数字证书和数字签名的一些认识

字签名,其实就是拿我们的私钥对想要签名的内容进行加密的过程。为什么数字签名能够在互联网中发挥作用呢?这是基于其两个特性。1)防篡改比如小明现在用自己的私钥将内容加密之后(签名),然后传给小红,小红可以用小明的公钥进行解密,从而看到内容。而在这个过程中,虽然其他人也有可能拿到小明的公钥去解密数据,然后看到数据的内容,但是其没有办法将数据修改之后,再重新加密,然后送给小红,因为没有小明的私钥。所以小明签名过的内容传给小红,就一定还是那些内容,没法篡改。2)防抵赖第二个问题就是,你一旦签了名,你就不

2014-09-22 12:25:39 4688

原创 关于字符集的学习笔记

大家知道,在计算机中,数据都是以二进制的形式来表示的,只有 0 跟 1。而我们在电脑屏幕上看到的能够被我们所理解的这些都是字符,不管是中文也好,英文也好,它们被存储到计算机内部的时候,都会被转换成二进制。那用什么样的二进制来显示什么样的字符呢,这就是由人们来决定了,这就是所谓的编码。也正因为此,出现了各种各样的编码方式,比如ASCII,UNICODE,还有和我们汉字相关的GB2312和GBK等。

2014-08-14 10:11:48 1778 1

原创 Android与WebView的插件管理机制

上一篇文章说到,当利用WebViewClient或者WebChromeClient来处理由html页面传过来的请求的时候,都会将对应的服务名称,操作方法和对应的参数数据传给一个叫PluginManager的类。PluginManager类的作用是什么?大家知道,当利用Android原生环境的功能,比如照像机,比如相册等,这些功能都是很分散的,说不清楚什么时候是需要这些功能,什么时候是不需要这些功能的,所以我们希望能够像插件一样,需要的时候就加载进来,不需要的时候不去理他,而PluginManager类就

2014-08-05 13:10:10 4987 2

原创 Android与WebView的同步和异步访问机制

WebChromeClient和WebViewClient是WebView应用中的两个最重要的类。通过这两个类,WebView能够捕获到Html页面中url的加载,javascript的执行等的所有操作,从而能够在Android的原生环境中对这些来自网页上的事件进行判断,解析,然后将对应的处理结果返回给html网页。这两个类是html页面和Android原生环境交互的基础,所有通过html页面来跟后台交互的操作,都在这两个类里面实现,在后面我们还会详细说明。2.4)mWebView.addJavasc

2014-08-04 13:25:04 12345 1

原创 跟面试官讲Binder(零)

通过上面的简单描述,我们可以这样认为,每一个提供服务的Server都会通过Binder驱动,将自身给注册到ServiceManager中,方便众多想获取服务的Client可以去ServiceManager找到自己。那么,这些Service都会经过内核空间的Binder驱动,其实这个"经过"的说法,本质上,就是Server们会将自身作为一个对象,封装在数据包中,将这些数据复制到内核空间中,由Binder驱动访问。而Binder驱动读取数据包的时候,如果发现其中有Binder实体,类似ServiceMana

2014-07-27 14:34:45 4947 16

原创 Android学习小Demo(21)ListView的联动选择

在日常的App开发中,尤其是在开发生活服务的应用上,很多时候,我们会需要联动地展现省市区的数据等,需求大概如下:1)展现所有省份2)当点击某省份的时候,在二级菜单上展现此省份下面所属的城市列表3)选中返回,显示我们选中的城市4)当重新进入选择页面的时候,标识出我们上一次选中(或者说当前已民选择)的值

2014-07-18 00:01:37 6232 1

原创 Android系统的启动过程

当我们拿到一台Android的智能手机,从打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的?系统上电当给Android系统上电,CPU复位之后,程序指针会指向启动地址,从该地址读取启动程序的可执行代码直接运行,或者将可执行代码与数据载入CPU内置的RAM中再运行。这一段代码,放在PC中,叫做BIOS,而在android等嵌入式系统中就叫做Bootloader。Bootloader引导程序通过Bootloader引导程序,可以初始化硬件设备,建立内存空间映射图,为操作系统内核

2014-07-12 22:03:24 1974 2

原创 由Git的SSH公钥到非对称加密

那么SSH公钥到底是什么,为什么要添加SSH公钥呢,怎么生成SSH公钥呢?希望能通过这一篇文章,将我理解的学习到的知识跟大家分享一下。公钥私钥,是非对称加密中的概念,是相对于对称加密而言的。所谓加密,就是将人人都能看懂的内容变成了莫名奇妙的内容,但是你跟我能够去解读它,而其他人则不行。这就等于给内容加上了一把锁。

2014-07-06 17:04:12 2550

原创 Git 工作流程

在项目组中使用Git的工作流程,有个专业的名称叫Git Flow。一般会使用以下五个分支来进行项目开发:1)master分支 2)develop分支 3)release分支 4)hotfix分支 5)feature分支不同的分支对应着不同的版本内容,掌握这个Git工作流程,相信能够帮助大家更好在项目组中使用Git,也有利于项目源代码质量的把控。

2014-06-26 23:33:12 1667

原创 Git 远程仓库

Git使用远程仓库的操作讲解:1)克隆远程仓库2)添加远程仓库3)从远程仓库抓取数据4)远程仓库本地改名5)删除远程仓库在本地的配置6)远程分支7)推送到远程仓库8)删除远程分支9)查看仓库信息

2014-06-20 00:18:00 1732

原创 Git 分支管理

当我们利用git init初始化一个目录的时候,这个时候是没有任何分支的,因为还没有任何文件纳入Git管理流程呢。linmiansheng@linmiansheng-PC /cygdrive/f/test_workspace$ git initInitialized empty Git repository in /cygdrive/f/test_workspace/.git/li

2014-06-19 08:32:45 1553

原创 Git 基本用法

Git有一个好处,在本地的每一个项目都是一个完整的仓库,除了需要从网络拉取和推送到网络之外,其他所有的操作都可以在本地完成。本文简单地介绍如何在本地使用Git来对文件进行管理,下一篇文章再来说一下分支的管理。根据文件在 Git中 的状态,可将其内部分为三个工作区域:1)工作目录 如果拿 Git 来管理项目的源代码,那工作目录就是一个Workspace。其中的源代码文件可根据其是否纳入Git的管理流程分为三类: 1.1)Untracked:未纳入Git管理流程的 1.2)

2014-06-17 14:37:23 1356

原创 Android学习小Demo(20)关于Fragment的应用

Android在3.0之后引入了Fragment的概念,我猜测其想法可能只是想更好地兼容大屏幕或者平板的开发,因为大屏幕可以展示更多的内容,而内容一多,逻辑有可能就乱,而利用Fragment,则可以将不同的逻辑封装进不同的Fragment中,但是展现呢,还是在同一个Activity中,在同一个屏幕上显示。而对于屏幕并不大的手机来说,如果一个页面展示的东西并不多,那么其实将逻辑直接写在Activit

2014-06-05 17:52:49 2212

原创 Android中关于JNI 的学习(六)JNI中注册方法的实现

在前面的例子中,我们会发现,当在Java类中定义一个方法的时候,如下:public class ParamTransferTest { public static int testval = 1; public native void changeTestVal();则在对应的JNI层中,由javah生成的头文件和其对应的C文件,其方法名称必须如下:JNIEXPORT voi

2014-06-03 18:07:41 2091 2

原创 Android中关于JNI 的学习(五)在C文件中使用LogCat

Log是开发过程中,对于我们调试程序非常重要的一个工具,有很多时候,我们正是通过Log才能够看清楚程序是不是真的按照我们想像中的模式在跑,从而定位到问题所在的地方。而在Android开发中,毫无疑问,要是没有了logcat,我们调试程序的时候,就会痛苦死。在NDK的开发中,尽管我们是利用C/C++来开发程序的,然后通过加载共享库的方法来调用C/C++程序,Android也提供了一套方法,可以让

2014-06-03 10:09:56 2264 1

原创 Android中关于JNI 的学习(四)简单的例子,温故而知新

在第零篇文章简单地介绍了JNI编程的模式之后,后面两三篇文章,我们又针对JNI中的一些概念做了一些简单的介绍,也不知道我到底说的清楚没有,但相信很多童鞋跟我一样,在刚开始学习一个东西的时候,入门最好的方式就是一个现成的例子来参考,慢慢研究,再学习概念,再回过来研究代码,加深印象,从而开始慢慢掌握。今天我们就再来做一个小Demo,这个例子会比前面稍微复杂一点,但是如果阅读过前面几篇文章的话,理解起来也还是很简单的。很多东西就是这样,未知的时候很可怕,理解了就很简单了。1)我们首先定义一个Java类,里面包

2014-05-22 13:37:36 2282

原创 Android中关于JNI 的学习(三)在JNI层访问Java端对象

前面两篇文章简单介绍了JNI层跟Java层的一些对应关系,包括方法名,数据类型和方法名称等,相信在理论层面,能够很好地帮助我们去了解JNI在Native本地开发中的作用,对JNI的一些概念也有了一个初步的认识,由于表达能力或者理解还是有限,有些地方讲得不是很清楚,如果各位朋友有觉得云里雾里,欢迎大家有留言一起学习。概念上的理解有助于我们更好地认识JNI,而一些实际点的例子则能够更好地帮我们从代码上去掌握并应用JNI。...这是一种最简单的情况,但更多时候,我们需要在JNI层获得Java对象,对其进行操

2014-05-20 13:30:46 2047

原创 Android中关于JNI 的学习(二)对于JNI方法名,数据类型和方法签名的一些认识

我们可以看到方法名是以Java_com_lms_jni等开头的,还有什么所谓的Signature,那这些其实都是什么意思呢,今天我们就来简单地认识一下。JNI 命名规则对于传统的JNI编程来说,JNI方法跟Java类方法的名称之间有一定的对应关系,要遵循一定的命名规则,如下:1) 前缀: Java_2) 类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest3) 方法名:getTestString

2014-05-19 13:43:18 3167

aidl实现跨进程通信Demo(进阶版)

Android利用Aidl实现跨进程通信并传递数据的Demo

2015-01-18

Aidl 小Demo 简单版

Android学习小Demo(23)Aidl实现进程间通信

2015-01-18

Android联动ListView

Android学习小Demo(21)ListView的联动选择 http://blog.csdn.net/linmiansheng/article/details/37914675

2014-07-17

关于Fragment Demo的源代码

这是关于Android中3.0之后引入的Fragment使用的Demo示例。可以参考 客: blog.csdn.net/linmiansheng 中对应的文章

2014-06-05

LoaderDemo源代码

Android学习小Demo(19)利用Loader来显示短信

2014-05-14

Android JNI demo

参考:http://blog.csdn.net/linmiansheng/article/details/25113461

2014-05-06

Volley Demo 2 源代码

参考: Android中关于Volley的使用(八)缓存机制的深入认识

2014-04-11

Fragment和ViewPager使用Demo源代码

请参考: Android学习小Demo(17)关于ViewPager和Fragment的使用 http://blog.csdn.net/linmiansheng/article/details/23282797

2014-04-09

导入已有数据的sqlitedb demo源代码

请参考:Android学习小Demo(16)Android中使用已存在数据的SqliteDatabase http://blog.csdn.net/linmiansheng/article/details/22685725

2014-03-31

Content Observer Demo 源代码

请参考: http://blog.csdn.net/linmiansheng/article/details/21043047

2014-03-11

volley demo 源代码 1

请参考:Android中关于Volley的使用(一)加载图片 http://blog.csdn.net/linmiansheng/article/details/20496441 Android中关于Volley的使用(二)加载Json数据 http://blog.csdn.net/linmiansheng/article/details/20956309

2014-03-10

volley jar包

android的volley jar 包

2014-03-04

TodoList源代码

参考:Android学习小Demo(10)ToDoList的改进版之ViewPager显示多个图片

2014-02-27

SqliteDemo源代码

请参考: http://blog.csdn.net/linmiansheng/article/details/19096067 Android学习小Demo(8)SQLiteDatabase的使用

2014-02-12

sharedpreference使用demo源代码

请参考: Android学习小Demo(7)SharedPreference的使用

2014-02-09

图片折叠效果的实现Demo源代码

参考:http://blog.csdn.net/linmiansheng/article/details/18896445

2014-02-01

矩阵Matrix实现推拉门效果的Demo源代码

请参考 :Android学习小Demo(5)结合Matrix跟Porperty Animatin 实现推拉门效果

2014-02-01

NineoldAndroids jar 包

Nineoldandroids包,由Github大牛jake wharton 开发,令Property Animation可以支持到1.x

2014-01-26

沿着贝塞尔曲线移动的按钮

请参考:Android动画学习Demo(3) 沿着贝塞尔曲线移动的Property Animation

2014-01-26

Property Animation Demo 源代码

请参考 Android动画学习Demo(2) 关于Property Animation的用法及总结

2014-01-23

Animation Demo 源代码 (更新版)

参考 Android动画学习Demo(1) 关于ViewAnimation的用法及总结

2014-01-22

View Animation Demo 源代码

参考 View Animation 效果

2014-01-22

贝塞尔曲线源码

请参考 Android学习小Demo(4)贝塞尔曲线跟翻页效果

2014-01-21

Android 音乐播放器源码

Android 音乐播放器,实现递归扫描SD根目录歌曲文件,切换播放模式、查看歌曲详细信息等基本功能,源码打包给大家,需要的下载哈 参考:http://blog.csdn.net/linmiansheng/article/details/18455593

2014-01-18

Android音乐播放器源码

请参考: http://blog.csdn.net/linmiansheng/article/details/18455593

2014-01-18

ApiDemoStudy

里面有三个小Demo 1)ApiDemo里面的Transition3D效果 2)自义义View和自定义ViewGroup 3) 利用HorizontalScrollView 去实现水平滚动的效果

2014-01-13

空空如也

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

TA关注的人

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