木水川的博客


  • 首页

  • 分类

  • 归档

  • 标签

使用opengl生产图片

发表于 2017-05-23   |   分类于 Android   |     |   阅读次数
在两年前,我受到Tweetable Mathematical Art的启发,使用c++根据一定的公式生成图片并通过jni调用将其在Android上展示出来,项目见Github。但是即使使用了jni,生成一张图片也基本都需要几百毫秒,可以说速度比较慢。既然是画图的工作那还是交给GPU来干吧,下面就使用opengl es 来将这些图做出来。 我们的思路是画一个满屏的正方形到手机屏幕上,并在这个正方形里面画我们的图形。这里我们就要用到shader了。创建两个shader文件,并将其放在assets目录下,这样在app中就可以直接将shader的内容读取出来。shader文件的后缀名就设为.java吧 ...
阅读全文 »

搭建自己的maven服务器

发表于 2017-05-01   |   分类于 maven   |     |   阅读次数
我们都知道Android studio 使用了Gradle来编译工程,在处理依赖上非常方便,一行代码就可以将一个库引入到工程中来。在工作中为了方便代码的共享提高开发效率,我们很有必要建一个自己的maven服务器,将我们的依赖工程放在服务器上,这样我们想引入我们自己的类库的时候就很方便了。下面我们来搭建一个maven服务器吧。 搭建服务器 申请个服务器,各种linux都可以。 下载Nexus Repository OSS, 地址为https://www.sonatype.com/download-oss-sonatype 将下载完的包发送到服务器上,如果使用的ssh方式连接服务器可以使用scp命 ...
阅读全文 »

Mp4文件解析

发表于 2017-03-09   |   分类于 Android   |     |   阅读次数
MP4可以说是当前最流行的视频格式,要播放一个MP4文件需要首先将其结构给解析出来。MP4的结构往简单了说就是类似于俄罗斯套娃一样的很多box套box,往复杂了说就是很多种类的box,而且还需要做一些解析和计算的操作,下面就按照其结构来分析一下MP4文件里的主要的box.左侧的目录可以清晰地展示出各种box之间的关系。需要注意的是在ISO标准中box的种类非常多,这里只是列举分析了一些比较重要的box. Mp4Box首先我们需要先了解一下box的结构。在Mp4中所有的box都包含了一个BoxHeader和BoxData.其中BoxHeader包含了box的类型和整个box的长度,BoxData ...
阅读全文 »

斯坦福大学swift课程笔记

发表于 2017-02-17   |   分类于 iOS   |     |   阅读次数
接到任务需要将Chromecast的iOS sender给实现一下,但是iOS基础太薄弱了,进行了一段时间感觉困难重重,需要系统得学习一下基础知识。所以在youtube上看了一下斯坦福大学的iOS教学视频,那位老师讲得非常棒,为了避免遗忘,记一下听课的笔记。 Lecture 5View的更新 在View上面添加@IBDesignable可以在storyboard中看到效果。 在变量上面添加 @IBInspectabl可以在storyboard中改变这些变量值,查看改变后的变化效果。运行的时候回应用改变的值。 当改变一个变量的值需要UI重绘的时候可以使用didSet: 12345var scal ...
阅读全文 »

Xcode 使用submodule解决依赖

发表于 2017-02-17   |   分类于 iOS   |     |   阅读次数
在Xcode中如果有依赖怎么办呢?一种办法是直接在当前项目上添加所需要的framework,但是如果有很多项目要依赖这些framewrok就不得不按个添加了。更悲惨的是,如果所依赖的framework更新了还要挨个项目手动地去更新。那怎么来解决这个问题呢?就是使用submodule。下面总结下submodule使用的步骤。 假设有项目A依赖于B,B又依赖于C。B可能会被多个项目依赖。 创建项目B,将对C的依赖加上,可以使用CocaPod等方式。 上传项目B到Github. 在项目A中运行命令123git submodule add git@Bgit submodule initgit sub ...
阅读全文 »

RecyclerView根据横竖屏显示list和grid

发表于 2016-11-17   |   分类于 Android   |     |   阅读次数
我们知道RecyclerView可以很容易地显示list和grid,下面我们这样一个需求:在竖屏的时候显示list,在横屏的时候显示grid;并且还要记住上次浏览的位置。下面来实现一下这个功能吧。 首先创建两个LayoutManager分别对应横竖屏使用12linearLayoutManager = new LinearLayoutManager(context);gridLayoutManager = new GridLayoutManager(context, 2); 在Manifest文件里对应的Activity下添加如下代码,这样在横竖屏切换的时候对应的Activity就不会被重新创建 ...
阅读全文 »

使用MediaCodec进行视频的编码和解码

发表于 2016-11-12   |   分类于 Android   |     |   阅读次数
在Android中播放视频很简单,只要创建一个MediaPlayer实例,然后设置上DataSource和SurfaceView就可以了。但是播放视频还有一种方式就是使用Android提供的MediaCodec,它可以用于编码和解码。另外如果要播放使用Android Widevine加密的视频则必须使用MediaCodec来完成解密和解码的过程。MediaCodec的工作原理很好理解,如下图所示,有一个输入的ByteBuffers向其输入数据,MediaCodec进行处理后会将其输出到一个输出的ByteBuffers里,典型的生产者消费者模型。下面我们来实现一下使用MediaCodec进行解码 ...
阅读全文 »

问题汇总

发表于 2016-10-18   |   分类于 备忘   |     |   阅读次数
在平时的工作中经常会碰见各种各样奇怪的问题,如环境配置、sdk版本选择等等。将碰到的问题都记录下来,一方面方便碰到有同样问题的同学,一方面做下记录,以后有同样的问题的时候可以回来看下。 Android 问题汇总values-v23.xml file shows error : “Error:(2) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Inverse’.”问题原因一般是因为在gra ...
阅读全文 »

使用Rxjava计算圆周率

发表于 2016-10-18   |   分类于 Java   |     |   阅读次数
对于圆周率率的求法有很多,最近看到一个Spark的例子使用了map和reduce的方法来求一个圆周率的近似值。这个算法的思想是这样的: 半径为r的圆的面积CA = π × r × r 这个园的外切正方形的面积SA = 4 × r × r π = CA / r / r = CA × 4 / SA 根据上面的推导,我们只要知道圆形和正方形的面积之比就行了。然后我们在这个正方形的面积内随机生成足够多的点,用落在圆内的点数除以总的点数就可以得到一个近似的比值了。当然随机值的数目越多,得到的结果就会越精确。 具体程序的实现上,我们假设圆心为(1,1)的圆的半径为1,所以正方形的边长就为2. 然后使用 ...
阅读全文 »

自定义View同时显示3个Fragment并自由切换

发表于 2016-05-26   |   分类于 Android   |     |   阅读次数
工作中需要实现如下的一个效果,有三个界面,两边的界面都漏出一部分来,点击两边或者在中间滑动就可以让旁边的界面同中间的进行交换.要怎么来实现这个效果呢? 1. 思路考虑到这三个界面互相独立而且相对有各自的业务,混在一起的话很乱,而且以后如果要替换某个界面会很麻烦(千万不要低估产品同学们改来改去的决心). 所以我们准备使用3个Fragment来分别实现3个界面的内容,在各个Fragment内部完成界面的渲染和数据的请求等. 那我们就需要三个Layout排列成图中的样子,然后将Fragment添加进去就可以了. 2. 实现有了思路就开始干吧.一开始的想法是在一个RelativeLayout里面放上3 ...
阅读全文 »
1234…6
木水川

木水川

人生如梦

58 日志
15 分类
27 标签
github 知乎

我的ChinaUnix博客

木水川
© 2023 木水川
由 Hexo 强力驱动
主题 - NexT.Pisces