- 博客(61)
- 资源 (33)
- 收藏
- 关注
原创 Android图像处理——Paint之Xfermode
上篇博客中,我将我对Paint的ColorFilter相关的几个子类以及用法做了总结,其中最常用的ColorMatrixColorFilter值得我们多学习学习,通过定义一个color值的4*5的矩阵,来设置Paint的各种各样的变色效果。此外,还有PorterDuffColorFilter,其实用的并不是很多,但是PorterDuffColorFilter中使用的几个概念尤其重要,我们要好好了解一下,PorterDuff是老外发明的一直图形混合模式,并且Android 的API中为我们提供了18种不同的混
2015-04-24 09:29:13
11746
原创 Android图像处理——Paint之ColorFilter
平时在Android开发中,一般不太可能频繁使用到Paint——画笔。但是在某些特殊的情况下,例如 自定义控件(继承View)的时候,有时候就需要请出画笔在画布(Canvas,将下篇文章中讲述Canvas)上像“画”出我们想要的元素。然而,很多开发人员对画笔Paint的了解知之甚少,包括我自己在内,所以在今天在这里总结一下Paint的在Android图像处理中起到的作用和用法。
2015-04-22 09:39:10
15340
3
原创 Android开发使用WebView实战技巧
前段时间做项目的时候,在项目中用了WebView组件,遇到了一些问题,所以特地找来了一些资料,学习怎么解决,现在将学习的内容整理成一篇博客记录在这里,方便以后再次遇到时可以快速查看并且解决问题。我们知道,Android中WebView是一个大型的组件,其实WebView是集成了著名的浏览器引擎webkit的一个框架,主要是用来在Android应用中加载渲染网页的。好了,这篇学习笔记之前,我也学习了Google的官方文档,介绍WebView的基本用法,并且翻译好了,地址是:http://blog.csdn.n
2015-04-02 09:58:27
5042
翻译 Android在WebView上构建Web应用程序
如果你想实现一个Web应用(或仅仅是一个网页)作为你应用中的一部分,你可以使用WebView来实现它。WebView是Android的View类的扩展,它允许你显示一个网页作为Activity布局的一部分。它不包含成熟的浏览器的一些功能,例如导航控制或输入栏。默认情况下,WebView显示一个网页。 一个使用WebView的很普遍的场合是当你想要在应用中提供需要时常更新的信息时,例如用户协议或用户手册。在Android应用当中,你能创建一个Activity它包含一个WebView,然后使用它
2015-04-01 09:10:23
3209
原创 Android属性动画简析
大家知道,我们在开发一款产品的时候为了达到良好的用户体验,我们可以在应用中适当的加上一些动画效果,譬如平移、缩放、旋转等等,但是这些常用的动画在Android很早期的版本中就存在了,我们称之为传统动画,传统动画一般分为Tween动画和Frame动画,这也是我们最常用的的动画,统称为Animation。传统的Animation动画实现上是通过不停的调用View的onDraw方法来重新绘制View来实现的。在Android3.0以后,Google为Android新增了属性动画框架Animator,为什么叫做属
2015-03-20 09:53:58
2529
1
原创 Android为ViewPager增加切换动画——自定义ViewPager
在上篇博客中,我写了一个使用属性动画为ViewPager添加切换动画的方法,并且可以兼容到Android3.0以下版本的设备上,那么关于为ViewPager添加动画的方式还会有另外一种实现方案,就是自定义一个自己带动画效果的ViewPager,关于上篇博客,还没来得及查看的朋友可以点击这里进行查看。下面,我们将新建一个工程,来说说怎样自定义一个自带切换动画效果的ViewPager。
2015-03-16 09:14:51
3726
原创 Android为ViewPager增加切换动画——使用属性动画
ViewPager作为Android最常用的的组件之一,相信大家在项目中会频繁的使用到的,例如利用ViewPager制作引导页、轮播图,甚至做整个app的表现层的框架等等。Android3.0以下不支持切换动画。但是在Android 3.0(API 11)以下的ViewPager是比较死板的,不支持动画特效的,这也就让ViewPager在切换的时候达不到很好的用户体验
2015-03-13 09:30:39
4636
1
原创 反编译Android应用
我们在开发Android应用的时候,常常会“参考”“借鉴”一下别人“想法”,你们懂的!然而,很多时候我们是看不见别人的源码的,这时候唯一解决的方法就是反编译apk,我们知道,当一个Android应用开发好了以后,会打包生成apk文件,然而Android打包工具会将java源码编译成.class字节码文件,将布局文件做乱码处理,还会将Nine Patch图片做特殊处理,如果不经过反编译而直接加压看其源码或者使用其资源文件,是很不理想的,下面我将记录下常见Android反编译工具的使用方法。
2015-03-04 10:19:32
2100
翻译 Android中使用Handler引发的内存泄露
当一个Android应用启动的时候,会自动创建一个供应用主线程使用的Looper实例。Looper的主要工作就是一个一个处理消息队列中的消息对象。在Android中,所有Android框架的事件(比如Activity的生命周期方法调用和按钮点击等)都是放入到消息中,然后加入到Looper要处理的消息队列中,由Looper负责一条一条地进行处理。主线程中的Looper生命周期和当前应用一样长。
2015-02-25 10:02:50
2821
4
原创 Activity中使用注解进行状态保存
一般开发中,当调用Activity生命周期方法onPause()和onStop()方法后,Activity的实例并没有被直接销毁,它仍然保存在内存中,Activity里面所有的信息和状态数据都将保存下来,当这个Activity重新回到前台的时候,所有的数据都会得到保留并且可被使用。 但是在一些特殊情况下,例如设备上装载了“XX大师”“XX助手”等清理内存的工具时,也有可能直接干掉我们后台的Activity,还有一种情况就是当系统的内存不足时,垃圾回收机制被自动回收到我们在之前已经onPause
2015-02-07 16:35:28
2364
1
原创 Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下。那么,DrawerLayout是一个怎么的组件呢?我们知道,当我们使用Android上各类App的时候,是不是注意过App主页上通常有一个“侧滑菜单”?关于侧滑菜单的实现,我在前面博客里有一些介绍,想多些了解的朋友请移步:
2015-02-03 09:17:10
16943
3
翻译 Android组件——创建DrawerLayout导航
创建一个抽屉布局必须得以DrawerLayout作为XML文件的根节点,记住,DrawerLayout引用的是android.support.v4.DrawerLayout,然后在布局内部添加内容视图区域和一个或者两个抽屉视图区域,这里理解抽屉视图即为上面描述的菜单视图。例如下面一段布局中显示,在布局中添加一个FrameLayout作为内容区域(通常用来呈现Fragment),另外在下面定义了一个listView用来呈现抽屉菜单视图:
2015-02-02 09:11:42
7339
原创 Android开发请求网络方式详解
大家知道Google支持和发布的Android移动操作系统,主要是为了使其迅速占领移动互联网的市场份额,所谓移动互联网当然也是互联网了,凡是涉及互联网的任何软件任何程序都少不了联网模块的开发,诚然Android联网开发也是我们开发中至关重要的一部分,那么Android是怎么样进行联网操作的呢?这篇博客就简单的介绍一下Android常用的联网方式,包括JDK支持的HttpUrlConnection,Apache支持的HttpClient,以及开源的一些联网框架(譬如AsyncHttpClient)的介绍。本篇
2015-01-12 17:09:25
7471
原创 Android NDK开发(九)——应用监听自身卸载升级版,使用Inotify监听安装目录
在上一篇博客中,我们讲了一个小小的案例,用NDK监听应用程序自身卸载,并且打开内置浏览器加载用户调用页面。关于监听应用程序自身卸载的原理和实现方案可以在上篇博客中找到,地址是:http://blog.youkuaiyun.com/allen315410/article/details/42521251,这里就不再复述了。 值得注意的是,在上篇博客中我也已经引述了一个案例中存在的问题,就是在监听应用程序安装目录是否被删除时,使用了while(true)这种死循环,让C代码每隔1秒钟去自动执行一次检查应用程
2015-01-09 16:35:54
8528
1
原创 Android NDK开发(八)——应用监听自身卸载,弹出用户反馈调查
在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。不知道大家在使用一个Android应用的时候,当我们卸载这个应用后,设备上会弹出一个“用户反馈调查”的网页出来,也许很多人没有留意过或者直接忽视了,那么从现在开
2015-01-08 17:35:22
11779
原创 Android NDK开发(七)——现代化开发方式
本专栏的前面几篇博客写了一些Android下通过JNI进行NDK开发的基础知识,主要步骤在里面也写的很清晰,但是看起来比较麻烦,为什么呢?可能细心的朋友会发现我每次在进行交叉编译的时候,是通过cygwin模拟Linux环境用ndk-build命令进行编译的,而且每次新建JNI工程的时候,都会在工程目录下手动的新建一个jni的目录,在该目录下新建C源码文件和Android.mk配置文件,这一系列的操作显得特别繁琐,尤其是cygwin,首先其下载安装是个非常耗时耗力的操作,其次使用cygwin还需要理解Linu
2015-01-07 17:30:18
3363
4
原创 Android NDK开发(六)——使用开源LAME转码mp3
在本专栏的前面几篇博客中讲述了一些Android NDK开发的基础,从环境搭建一直到利用JNI进行Java端和C端代码的互相调用,并且的讲解的Demo也是很简单易懂的,相信掌握前面博客的大部分内容,就可以着手在实际项目中利用JNI进行NDK开发了,那么既然基础过了,接下来我在这里尝试去使用真实项目中去。我们知道,C语言因为高效,而且又是最早期的高级编程之一,一直存活至今近40年了,所以很多用C开发出来高效类库是可以被复用的,这样不仅做到高效率,而且减少了项目开发周期。在这里我找到了一个关于音频文件转码的最常
2015-01-06 16:16:29
18056
5
原创 Android NDK开发(五)——C代码回调Java代码
在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部分的实际开发知识,基本上掌握这些就可以做一个基本的NDK开发了,但是光是了解Java回调C层的数据是不是还不够啊,考虑问题要考虑可逆性,Java能回调C,那么C能否反过来回调Java呢?答案是肯定可以的,这篇博客就介绍一个C语言如何调用Java层的代码。以下是一些问题场景,我们带着这个问题场景来分析一下实现的过程。
2015-01-05 09:27:00
9763
2
原创 Android NDK开发(四)——Java传递数据到C
前面几篇文章介绍了Android NDK开发的简单概念、常见错误及处理和从第一个Hello World开始实际做一个简单的JNI开发示例,相信看完之后,大家对NDK开发有了一个概念上的认识了,那么接下来我们需要再深入一下NDK的开发,我们知道NDK开发就是使用JNI这层“协议”在Java和C之间起个“桥梁”的作用,将Java和Native C之间联立起来,让Java和C直接的数据进行互调。谈到Java和C之间的数据调用,那么Java是怎样传递数据到C中的呢,C拿到数据处理完后又怎样将处理后的数据回传给Jav
2015-01-04 10:02:36
4965
原创 Android NDK开发(三)——常见错误集锦以及LOG使用
Android NDK开发经常因某些因素会出现一些意想不到的错误,很多时候调试这些错误的时候,显得比调试Java代码要复杂,一方面是导致错误的原因很多很杂,另一方面NDK开发涉及到C/C++代码的编写,很多程序员对此不熟悉。那么这篇博客就总结一下,在NDK开发中经常出现的一些问题,并且尝试提供一些正确的解决方案,方便在开发时能够快速定位到错误,更改错误,当然了,错误是多种多样的,很难把所有的错误都总结出来,在这里仅作为一个笔记吧,以后在NDK开发中发现一个错误或者解决一个错误后,我就在这里记录一下,日积月累
2014-12-27 16:16:09
9845
1
原创 Android NDK开发(二)——从Hello World学起
上篇文章讲述了Android NDK开发的一些基本概念,以及NDK的环境搭建,相信看过的朋友NDK开发环境搭建应该是没有问题了,还没有搭建或者不知道怎么搭建的朋友请点击这里。那么这篇文章,我们跟刚学Java编程语言一样,从世界知名程序“Hello World!”开始,开发出我们的第一个NDK程序。
2014-12-26 09:32:00
6071
原创 Android NDK开发(一)——环境搭建
Android下的NDK开发是Android开发中不可或缺的一部分,通过Google提供的NDK套件,我们可以使用JNI这座桥梁在Java和C/C++之间建立联系(互相调用)。那么,为什么在Android开发中需要了解NDK开发呢?诚然,这些原因有很多说法,在我总结来是这样的。C/C++是比Java还要古老的编程语言,由于其古老的特性,导致早期有很多优秀的类库出现,譬如处理视频编解码的FFMPEG类库,这些复杂的类库早就被C/C++编写过,我们在处理视频编解码的时候没必要重复“造轮子”,所以能直接拿来用的就
2014-12-25 21:23:10
5135
1
原创 Android自定义ProgressDialog
我们在开发Android上应用程序时,有很多时候会遇到“延时”等待的情况,例如数据加载时,尤其是在联网的时候,请求网络会有个等待时间,在这个等待的时间里需要给用户一个友好的提示,提示用户现在正在做什么操作,需要耐心等待等等,这时一个进度对话框就可以解决。Android提供给我们一个很好的控件叫ProgressDialog,用来创建自定义信息以及一些相关操作,唯一不好的一点就是Android原生控件给我一种一如既往的单调和丑陋,下面是原生ProgressDialog的源码以及效果
2014-12-03 17:55:12
17439
3
原创 Android自定义ViewPager(二)——添加ScrollView,事件分发应用
上篇文章介绍了自定义ViewPager的简单实现,完成了模拟动画效果的实现,本篇将继续接着上篇的内容进行扩展,阅读本篇前请确保浏览过上篇文章,地址是Android自定义ViewPager(一)——自定义Scroller模拟动画过程。开始之前,先想想要从哪几个方面进行优化呢?先参考一下ViewPager吧!
2014-11-30 21:40:41
2882
原创 Android自定义ViewPager(一)——自定义Scroller模拟动画过程
相信Android SDK提供的ViewPager组件,大家实在是熟悉不过了,但是ViewPager存在于support.v4包下的,说明ViewPager并不存在于早期的android版本中,那么如何在早期的android版本中也同样使用类似于ViewPager一样的滑动效果呢?这里,我们还是继续探讨一下andrid的自定义组件好了,并且这篇博文只探讨android的一些知识,并不是刻意去构建一个自定义的ViewPager去使用,这个是没有必要的,请将注意力集中在实现这个效果的知识点上,方便以后“举一反三
2014-11-29 00:57:19
4803
5
原创 Android程序crash处理
在实际项目开发中,会出现很多的异常直接导致程序crash掉,在开发中我们可以通过logcat查看错误日志,Debug出现的异常,让程序安全的运行,但是在开发中有些异常隐藏的比较深,直到项目发布后,由于各种原因,譬如android设备不一致等等,android版本不同,实际上我们在测试的时候不可能在市场上所有的Android设备上都做了测试,当用户安装使用时被暴露出来,导致程序直接crash掉,这显然对于用户是不OK的!这些在用户设备上导致crash的异常我们是不知道的,要想知道这些异常出现的一些信息,我们还
2014-11-24 13:45:37
4703
原创 Android禁止ViewPager的左右滑动
有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的ViewPager禁止滑动吧,让被嵌入的XXView获得滑动事件好了。关于解决方法,网上也有很多说法,基本上是一致的,但是需要理解这个Android下的事件分发机制才行,不明白事件分发机制的,上网查些资料看看,然后我这里也有简单的介绍,请参看博客Android自定义控件——侧滑菜单的下方。
2014-11-03 19:05:37
53266
4
原创 Android最新组件RecyclerView,替代ListView
万众瞩目的android最新5.0版本不久前已经正式发布了,对于我这样对新事物不感冒的人来说,自然也是会关注的,除了新的android5.0带来的新的UI设计和用户体验之外,最让android程序员感兴趣的是5.0版本的sdk和一大堆新的API。5.0据说是额外增加或者修改了5000个API,新增了一些新的组件,下面介绍的RecyclerView就是其中之一,有人说Google设计出的RecyclerView是为了替代一直常用的ListView的,所以既然如此,我们就没理由不看看这个“传说”中的Recycl
2014-10-22 20:08:48
13729
原创 Android仿微信朋友圈图片查看器
看博文之前,希望大家先打开自己的微信点到朋友圈中去,仔细观察是不是发现朋友圈里的有个“九宫格”的图片区域,点击图片又会跳到图片的详细查看页面,并且支持图片的滑动和缩放?这个功能是不是很常用呢?!那么我今天正好做了这个Demo,下面为大家讲解一下。首先按照惯例先看一下效果图吧,尤其不会录制gif动画(哎~没办法,模拟器不支持多点触控,刚好我的手机又没有Root,不能录屏,悲催啊,大家见谅,想要看真实效果的话,烦请移到博文最下方,点击下载源码,运行后再看效果哈~~),这里先就拿几张静态的图片顶替一下好了。见谅!
2014-10-20 00:02:21
45097
7
原创 ListView嵌套GridView显示不全解决方法
其实这个ListView上一共需要显示的是6张图片,也就是说还有3张图片需要在下一行显示的,结果GridView没有显示完全,这个问题很奇怪,但是已经找到解决的方案,就是重写一个GridView,做一个自定义的GridView,然后重写GridView的onMeasure(int widthMeasureSpec, int heightMeasureSpec)的方法,将GridView重新测量,并且指定GridView的新的高度。
2014-10-16 19:14:50
9496
原创 Jsoup简介——使用Java抓取网页数据
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jsoup的主要功能如下:1. 从一个URL,文件或字符串中解析HTML;2. 使用DOM或CSS选择器来查找、取出数据;3. 可操作HTML元素、属性、文本;
2014-10-15 22:36:35
16420
原创 android拍照图片选取与图片剪裁
最近从以前的项目中扒下来一个常用的模块,在这里有必要记录一下的,就是android上获取图片以及裁剪图片,怎么样?这个功能是不是很常用啊,你随便打开一个App,只要它有注册功能都会有设置人物头像的功能,尤其在内容型的app中更为常见,那么这些功能是怎么实现的呢?今天,在这里就记录一下好了,防止以后的项目中也会用到,就直接拿来用好了。
2014-10-11 16:09:40
20432
1
原创 Android自定义控件——ListView的下拉刷新与上拉加载
无疑,在Android开发中,ListView是使用非常频繁的控件之一,ListView提供一个列表的容易,允许我们以列表的形式将数据展示到界面上,但是Google给我们提供的原生ListView的控件,虽然在功能上很强大,但是在用户体验和动态效果上,还是比较差劲的。为了改善用户体验,市面上纷纷出现了各种各样的自定义的ListView,他们功能强大,界面美观,使我们该需要学习的地方。其中,使用最频繁的功能无疑就是ListView的下拉刷新和上拉加载数据了,几乎在没一款内容型的App中都可以找到这种控件的身影
2014-10-10 20:14:21
19444
1
原创 Android自定义控件——3D画廊和图像矩阵
我们知道android系统已经为我们提供好了一个展示图片的“容器”——Gallery,但是这个Gallery显示的效果是平面化的,动态效果不强。这里,我们动手做一个自定义的Gallery组件,实现图片的3D效果展示,想想应该不错吧,先看看效果图
2014-10-09 17:16:53
6489
1
原创 Android自定义控件——开源组件SlidingMenu的项目集成
在实际项目开发中,定制一个菜单,能让用户得到更好的用户体验,诚然菜单的样式各种各样,但是有一种菜单——滑动菜单,是被众多应用广泛使用的。关于这种滑动菜单的实现,我在前面的博文中也介绍了如何自定义去实现,请参考Android自定义控件——侧滑菜单,这篇博文描述的是如何从无到有创建一个侧滑菜单的控件,里面的代码不多,但是处理的逻辑和各种效果比较复杂,如果稍有不慎,这种自定义控件就要BUG不断,难以在项目中使用,而且实现的效果比较单一。
2014-09-27 17:41:30
7598
原创 Android自定义控件——自定义组合控件
前面几篇博文介绍了Android如何自定义控件,其实就是讲一下如何“从无到有”的自定义一个全新的控件,继承View或者继承ViewGroup,复写其相关方法,这种自定义控件的方式相对来说难度较大,而且并不是所有需要新控件的情况下,都要这样进行。有很多情况下,我们只要运用好Android给我提供好的控件,经过布局巧妙的结合在一起,就是一个新的控件,我称之为“自定义组合控件”。
2014-09-26 16:42:34
5054
原创 Android自定义控件——侧滑菜单
当我们打开某些应用的时候,总是会出现“侧滑菜单”这样的效果,至于这种侧滑菜单是谁首先创造出来的,已经不重要,但是侧滑菜单确实功能新颖,用户体验极好,以至于市面上很多很多的应用也纷纷加入侧滑菜单的效果,以下是我从应用市场上下载来的几个应用,随时截图发在这里,看看别人(大型互联网公司)都做这种效果,那么我们自己在没有很好的“创意”下,是不是可以选择“山寨”(自定义)一下呢?!
2014-09-22 11:41:44
9525
2
原创 Android自定义控件——自定义属性
我们在自定义android组件的时候,除了用Java构建出组件的样子外,有时候还需要去申明一些“属性”提供给项目使用,那么什么是组件的属性呢?例如在清单文件中,创建一个TextView的时候,这是需要制定TextView的android:layout_width="wrap_content" android:layout_height="wrap_content"等等这些都是组件的属性,TextView是android系统为我们提供好的组件,它的属性亦是android系统为我们提供了。
2014-09-18 13:02:45
18047
4
原创 Android自定义控件——仿ios开关按钮
大凡在公司做客户端产品开发的都会发现,android和ios的差异化,ios得益于“老乔”的精心设计,界面用户体验做到了极致,而android秉承开源思想,界面用户体验百家各有其长,相互不得统一。不说废话,先上图,看看ios的“开关按钮”
2014-09-16 17:23:35
8688
1
原创 Android自定义控件——仿淘宝、网易、彩票等广告条、Banner的制作
尊重作者劳动成果,转载时请标明该文章出自 http://blog.youkuaiyun.com/allen315410/article/details/39294343最近翻看以前的某项目时,发现了一个极其常用的效果——广告条,或者也称不上自定义组件,但是使用频率还是相当普遍的。打开市面上各大App主界面,或多或少会出现这样的东西,甚至一个应用中出现N多个,这种展示广告的效果,不仅动态效果好,而且
2014-09-15 17:21:46
7316
1
cygwin安装包
2014-12-08
Android自定义ProgressDialog
2014-12-03
仿ViewPager,事件分发应用
2014-12-02
Android仿ViewPager,自定义Scroller模拟动画
2014-11-29
RecyclerView简单使用
2014-10-22
android图片选取与剪裁
2014-10-11
ListView的下拉刷新与上拉加载
2014-10-10
android自定义3d画廊效果
2014-10-09
Android——3d画廊
2014-10-09
Android矩阵Matrix基础详解
2014-10-09
SlidingMenu侧滑菜单
2014-09-27
Android自定义组合控件
2014-09-26
Android仿网易自定义侧滑菜单
2014-09-20
Android自定义控件——仿ios滑动开关按钮(带自定义属性)
2014-09-18
仿淘宝、网易等广告条banner效果
2014-09-15
自定义ViewPager带切换动画
2015-03-13
为ViewPager添加动画效果
2015-03-12
Android反编译之apktool
2015-03-04
Android反编译之dex2jar
2015-03-04
Android反编译之JD-GUI
2015-03-03
Android仿网易新闻v4.4最新版侧滑菜单
2015-01-29
Android应用使用Inotify机制监听自身卸载
2015-01-09
Android应用监听自身卸载
2015-01-08
Android NDK开发——C回调Java中的方法
2014-12-11
NDK开发——Java传递数据给C
2014-12-10
Android NDK——Hello JNI
2014-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人