- 博客(87)
- 收藏
- 关注
原创 Android 属性动画,沿着一定角度弹出菜单
在前面的博客中已经简单的介绍了属性动画的一些特性。本文是对《Android 属性动画特效》http://blog.csdn.net/antimage08/article/details/50903894 的延续。在该基础上增加对一定角度上,菜单的弹射。效果如下:该效果是沿着一定角度进行弹射的,那么我们可以把该效果分解成沿着 X 轴和 Y 轴两个方向上的效果来做。其中的可变参数为距离的正
2016-05-24 11:27:18
961
原创 Android 中ListView 嵌套 ListView
在 Android 有时候会用到一个 ScrollView 嵌套一个 ScrollView 的问题,虽说不推荐这样使用。但是还是可以了解一下。下面是一个 ListView 嵌套一个 ListView 。效果如下:在上面的效果图中,主要是在于子 ListView 的滑动。这时候就需要由事件的分发机制来解决了。子 ListView 需要滑动,那么父 ListView 就不能把事
2016-05-12 15:33:46
949
原创 Android 自动显示与隐藏布局的 ListView
下面这个效果是,向下滑动 ListView ,其顶部布局自动显示;向上滑动 ListView ,其顶部的布局自动隐藏。效果如下: 首先这个效果的实现大致需要如下几步: 1. 让其没有 ActionBar ,可在 style.xml 中设置主题样式 Theme.AppCompat.Light.NoActionBar 。
2016-03-24 21:53:26
2774
原创 Android 多线程下载
多线程下载网上有很多的例子,其中需要注意的就是:每个线程该分配多大的算法;通过请求从返回的 getContentLength() 方法获取需要下载的文件大小。使用 RandomAccessFile 类来创建文件夹。因为该类可以从文件的任何位置开始读写操作,有 seek() 方法。下载成功后的示意图:具体代码如下:MultiThreadDownload.j
2016-03-21 20:33:50
589
转载 Android 单位转换(dp、sp、px)
Android 系统屏幕密度信息见下表:独立像素密度 dp Android 系统使用 mdpi 即密度值为 160 的屏幕作为标准,在这个屏幕上 1px = 1 dp。例如同样是 100dp 的长度,在 mdpi 中为 100px,在 hdpi 中为 150px。各个密度值中的换算公式,在 mdpi 中 1 dp = 1 px,在 hpdi 中 1dp = 1.5 px,在
2016-03-16 16:06:18
539
原创 Android 属性动画特效
在 Android 3.0 之前已有的动画框架 Animation 存在一些局限性—— 动画改变的只是显示,并不能响应事件(相比属性动画,视图动画的一个非常大的缺陷就是不具备交互性,当某个元素发生视图动画后,其响应事件的位置依然在动画前的地方,所以视图动画只能做普通的动画效果,避免交互的发生。它的优点是效率比较高使用方便)。本文要实现的效果如下:在这之前先简单的介绍
2016-03-16 14:31:26
538
原创 Android SVG 矢量动画机制
Google 在 Android 5.X 中增加了对 SVG 矢量图形的支持。可从如下方面简单了解什么是 SVG。 1、指可伸缩矢量图形 (Scalable Vector Graphics) 2、 用来定义用于网络的基于矢量的图形 3、使用 XML 格式定义图形 4、图像在放大或改变尺寸的情况下其图形质量不会有所损失 5、是万维
2016-03-16 00:06:59
1425
原创 Android 刮刮卡效果
PorterDuffXfermode 这个类在以前的博客中就已经使用过,见《利用 2D 图形和 PorterDuffXferMode 等实现被遮罩的图片》http://blog.csdn.net/antimage08/article/details/50396931。PorterDuffXfermode 相关的可以参见 API Demo 中图,如下: 它控制的是两个图像
2016-03-14 23:27:06
542
原创 Android 中的 Searchable 使用,及删除记录
Android为程序的搜索功能提供了统一的搜索接口,search dialog和search widget,这里简单介绍search dialog使用。search dialog 只能为于activity窗口的上方。下面以点击EditText输入框启动search dialog搜索框为例,效果如下: 该效果是在点击 EditText 时,自动跳转到 google 自带的
2016-03-02 22:51:24
3366
1
原创 fragment 的隐藏及界面切换的效果
在前文中的效果中(http://blog.csdn.net/antimage08/article/details/50759279),点击屏幕下方的 TextView 以此来实现 5 种 fragment 界面的切换。 由于网络数据的加载存在于不同的界面之中,当快速的切换界面时,就会出现程序的出错。因为快速的切换时,当前界面的数据还在读取,就切换到下一个界面,下一个界面也开始加载数
2016-03-01 20:17:52
3212
原创 自定义 ActionBar ,创建复合控件
当多个界面都有很多相似部分时,可以考虑创建一个功能较全的模板。而在需要时,可以通过引用模板来实现自己想要实现的功能。比如适配器 Adapter,当很多的适配器都差不多时,就可以通过打造一个通用的适配器来实现。本例中主要是如何创建自定义的 ActionBar。 观察上图的,当切换界面时,每个界面的顶部最多只有两个图标,而且有4个界面具有类似特性。所以可以考虑通过自定义控
2016-02-28 12:32:59
677
原创 利用Android的媒体库,遍历SD卡中的音乐文件,并用Service制作简单的音乐播放
在前文中利用递归的方法遍历SD卡中的音乐文件http://blog.csdn.net/antimage08/article/details/50556645,现在利用Android中的媒体库,遍历SD卡中的音乐文件。效果如下:效果图中的音乐列表图片:音乐文件如.mp3 一般都包含有该音乐的基本信息,如图片,歌曲名,艺术家等。注意:没有歌词。下面这个类就可以得到这些信息。
2016-02-18 17:06:31
4312
2
原创 仿新闻图片浏览
本文是仿网易新闻中的图片浏览示意,但是又增加了些图片翻动时的效果。效果如下:该图片是网上实时更新的图,此处不在有JSON的解析等,点击该图片后把URL传递给 Activity,以此来加载。布局文件效果如下:其代码如下 news_pict_show_layout:<RelativeLayout xmlns:android="http://sc
2016-02-14 20:59:21
675
转载 递归遍历 SD 卡目录下的所有音乐文件,并点击条目后进入相应的播放界面
在编写音乐 app 时,需要用到SD 卡目录下的音乐文件。遍历 SD 卡目录下的所有音乐文件,显示在相应的条目后,点击相应条目后就可以进入播放界面。点击条目时还需要传递参数可以用 Parcelable 实现传参。在前文中也有该 Parcelable 传参的示例。 效果如下:遍历 SD 卡目录下的文件:MusicCursorListActivity.java :
2016-01-21 17:43:37
3608
转载 利用 HorizontalScrollView 实现滑动页面时的缩放效果
在前面的文章中也有关于 HorizontalScrollView 的使用 http://blog.csdn.net/antimage08/article/details/50493233 。这里主要实现的是向右滑动时,左侧的视图有逐渐放大,也会越来越清晰;向左滑动时,左侧的视图逐渐减小,逐渐变的模糊,且不移出屏幕左边缘的效果。效果如下(可以在主页面上的右侧向右滑动都可以实现该效果):
2016-01-16 11:16:50
2236
原创 利用自定义的 RecyclerView 实现相册的滑动功能
利用自定义的功能实现和上次一样的功能(相册), 《 使用 HorizontalScrollView 实现水平滚动,并点击有相应的反应效果》http://blog.csdn.net/antimage08/article/details/50493233 这次的自定义解决了上次在第 9 张图片时不能显示的问题,并添加了一些额外的功能。 关于 RecyclerView 前面的文章已
2016-01-12 21:26:16
1930
转载 使用 HorizontalScrollView 实现水平滚动,并点击有相应的反应效果
HorizontalScrollView 和 ScrollView 都是由 FrameLayout 派生出来的。它们就是一个用于为普通组件添加滚动条的组件。且HorizontalScrollView 和 ScrollView 里面最多只能包含一个组件(当然组件里面还可以嵌套组件)。它们不同的是HorizontalScrollView 用于添加水平滚动,而 ScrollView 用于添加
2016-01-10 18:53:44
8529
1
原创 利用 HandlerThread 创建一个后台工作线程( AsyncTask 的缺点),处理图片缩放时内存溢出问题
在前面的博客中有提到 HandlerThread 的简单使用:http://blog.csdn.net/antimage08/article/details/50473788 HandlerThread 可以帮助创建一个拥有有效 Looper 的后台线程,该 Looper 会关联一个 Handler,而 Handler 中的 MessageQueue 会处理所有的任务
2016-01-07 23:25:40
578
原创 Handler 和 HandlerThread 的简单使用
HandlerThread类是一个线程专门处理Hanlder的消息,依次从Handler的队列中获取信息,逐个进行处理,保证安全,不会出现混乱引发的异常。HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量。关于 HandlerThread 在后面的文章中还有介绍。Handler 还存在一些缺陷,它可能会照成
2016-01-07 08:57:53
1139
原创 JSON 的解析
JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,是一种轻量级的数据交换格式。JSON 提供了多种语言之间完成数据交换的能力,是一种理想的数据交换格式。 JSON 主要有如下两种数据结构:(1)、有 key-value 对组成的数据结构。(2)、有序集合。 下面介绍 JSON 的解析方式:--
2016-01-04 19:53:42
452
转载 SoundPool 播放音效,VideoView 播放视频的简单介绍
如果应用程序经常播放密集、短促的音效,这时使用 MediaPalyer 就不合适了。MediaPalyer 的缺点如下:-----> 资源占用量较高,延迟时间较长。-----> 不支持多个音频同时播放。Android 提供了 SoundPool 来播放音效,SoundPool 使用音效池的概念管理多个音效,例如它可以开始就加载10个音效,以后在程序中按银熊的 ID 进行播放。Sou
2016-01-03 15:15:17
634
转载 使用 ContentProvider 管理联系人(包括每人有多个电话号码)
Android 系统提供了 Contacts 应用来管理联系人,而且 Android 系统还为联系人管理提供了 ContentProvider,这就允许其他应用程序以 ContentResolver 来管理联系人数据。Android 系统用于管理联系人的 ContentProvider 的几个 Uri:-----> ContactsContract.Contacts.CONTENT_URI
2016-01-02 19:31:32
2264
转载 Android 图片的内存优化
网上有着几乎相同的关于 Android 图片的内存优化的内容,现对其整理,内容如下:1. 对图片本身进行操作尽量不要使用 setImageBitmap、setImageResource、 BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 decode 后,最终都是通过 Java 层的 createBitmap 来完成的,需要消耗更
2016-01-01 20:46:03
402
转载 Sun的JDK7、OpenJDK及IcedTea释疑
前几个小时,一位 google 发言人称:“作为一个开源平台,安卓是基于开源社区的合作”,“针对下一个安卓版本,我们将以Open JDK为基础,为开发人员创建一个共有的代码库,方便他们开发各类app和服务。Google跟OpenJDK社区的合作已经有很长时间,我们期待将来能为OpenJDK项目作出更多贡献。”这就意味着:计划将于明年年底上线的Android N系统将不再依赖目前所使用的
2015-12-30 12:47:05
1117
转载 利用 NotificationManager ,BigTextStyle等,实现普通、自定义、扩展样式,锁屏时,安全通知功能的状态栏通知
应用程序正在后台运行,当前没有用户可见的界面,但还必须将发生的重要事件通知给用户,就可以使用 NotificationManager 发送状态栏通知。通过所有的系统控件,如 Service,BroadcastReceiver 或 Activity,可以将通知发送到 NotificationManager。 下面的示例你会看到一个 Activity ,它在用户离开时发送一系列不同的通
2015-12-29 22:10:28
4382
1
转载 平铺 Drawable 元素
如果希望在运行时对基础资源动态改变颜色,避免重复仅在颜色方面有所变化的常见资源。则可以使用颜色滤镜,对任意 Drawable 实例应用颜色遮罩。 Drawable 颜色滤镜通常是完全不透明的,但 Android 框架还支持通过 PorterDuff.XferMode 进行部分混合。只可以从 Java 代码中执行此方法。 下面的是没有加颜色滤镜时的输出:
2015-12-28 21:02:45
385
转载 使用 Palette 提取图片调色板
使用 Palette 支持包分析图片的像素数据,并为旨在补充此图片的背景和文本产生颜色样本。 调色板仅作为 Android 支持库中的模块提供,它不是核心框架的一部分。然而,目标平台为 API Level 7或之后版本的任意应用程序都可以通过包含支持库使用调色板。可以把 V7 支持库中的关于 palette 的 jar 包拷贝到应用程序中的 libs 包下。 效
2015-12-27 22:40:02
2172
转载 TextureView 的使用
在上文中介绍了 SurfaceView, TextureView 和普通的 View 的区别。现在介绍SurfaceView 和 TextureView的区别。 TextureView 适用于 Android 4.0 和之后的版本,在很多的情况下可以顺便作为 SurfaceView 的替代品来使用。TextureView 的行为更像传统的 View,可以对绘制在它上面
2015-12-27 16:36:07
6463
原创 SurfaceView 实现高性能的绘制
先说说自定义 View 绘图机制的缺陷:1. View 缺乏双缓冲机制;2. 当程序需要更新 View 上的图片时,程序必须重绘 View 上显示的整张图片;3. 新线程无法直接更新 View 组件。 由于 View 存在上述的缺陷,所以通过自定义 View 来实现绘图,尤其是游戏中的绘图时性能并不好。Android 提供了一个 SurfaceView 来代替
2015-12-27 10:45:00
4874
转载 ViewOverlay 的使用
在视图上绘制内容的一种方法是使用 ViewOverlay 实现。ViewOverlay 和 ViewGroupOverlay 用于添加可在视图顶部绘制的任意数量的 Drawable 对象。但是应用程序不能直接创建ViewGroupOverlay,而是在层次结构中的任意视图上调用 getOverlay() 来获得ViewOverlay。视图被约束为只能在其边界内绘制,因此如果覆盖层中的内容延
2015-12-25 21:41:24
3423
转载 利用 2D 图形和 PorterDuffXferMode 等实现被遮罩的图片
利用 2D 图形和 PorterDuffXferMode 等实现被遮罩的图片
2015-12-24 21:25:04
1108
原创 利用 ViewPager 等,实现带小圆球的图片滑动,并且只有第一次安装app时才出现欢迎界面(图片)
利用 ViewPager 等,实现带小圆球的图片滑动,并且只有第一次安装app时才出现欢迎界面(图片)
2015-12-22 22:17:00
1495
转载 利用 viewPager ,ShapeDrawable 实现带小圆球的页面滑动
利用 viewPager ,ShapeDrawable 实现带小圆球的页面滑动
2015-12-21 22:16:03
676
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人