从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取. 1. static Bitmap createVideoThumbnail(String filePath, int kind) //获取视频文件的缩略图,第一个参数为视频文件的位置,比如/sdcard/andro
android
Android系统详解之获取图片和视频的缩略图
Android Layout各种布局
Android Layout各种布局 LinearLayout(线性布局) 提供了控件水平垂直排列的模型,同时可以通过设置子控件的weight布局参数控制各个控件在布局中的相对大小. 水平(vertical)垂直(horizontal) fill-parent:占满整个屏幕, wrap-content:刚好适合控件内容的大小 对齐方式gravity取值: top:不改变大小,位置置于容器的顶部 bottom:不改变大小,位置置于容器的底部 left:不改变大小,位置置于容器的左边 right:不
Android动画图标——I am not a gif maker,I am a developer
最早在git上发现一个很酷眩的动画图标效果: https://github.com/xuyisheng/tickplusdrawable 不得不说,国外的程序员在细节的考虑上,确实比我们要好很多,ok,今天我们就来模仿下这个: 现来看看我们的效果,别喷我,就写了个把小时,很多细节还没考虑全,代码也还没重构,希望大家能提出修改意见,thx- gif效果不一定好,大家可以参考github的gif. 代码如下: 首先我们要来了解下原理: 1.我们首先来确定一些关键点的坐标,也就是我们要显示的图形的所有
Android 4.4的栈结构变化
我们知道,activity 在 AMS 中的形式是 ActivityRecord,task 在 AMS 中的形式为TaskRecord,进程在 AMS 中的管理形式为 ProcessRecord. 我们先看下 4.4 之前的版本:android4.4 之前的版本,AMS 管理 Task 是通过一个 ArrayList mHistory 来管理所有的 activity: 结论如下:(1)所有的 ActivityRecord 会被存储在 mHistory 管理;(2)
Android背景资源优化—1
UI优化 按钮背景扁平化处理 定义一个黑色边框,白色背景的图片作为背景 black_border.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="5dp" /> <
Android坐标系详解
View中的scrollTo方法配合Scroller类,可以实现视图的位移动画效果.相对于补间动画,这种实现方式更加灵活,而且不仅改变了视图的绘制位置,也改变了视图的点击区域,可以认为是一种"真实"的位置改变.对于初学者来说,scrollTo的滚动方向问题往往是让人迷惑的,今天来说一说我对这个问题的理解. 首先来分析"滚动"这一概念,"滚动"需要两个元素:滚动对象A和滚动参照物,进一步说,是滚动对象A和参照物上的坐标系B,A的位置改变由B坐标系中
Duplicate files copied in APK META-INF/LICENSE.txt
Error:Execution failed for task ':app:packageDebug'. > Duplicate files copied in APK META-INF/LICENSE.txt File 1: /Users/weichunsheng/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-
Android打开各种类型的文件方法总结
很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action.datatype.uri的相关知识. 通用方法如下: public static Intent openFile(String filePath){ File file = new File(filePath); if(!file.exists()) return null; /* 取得扩展名 */ String end=file.getName().substring(file.getName().l
Android自定义类库详解
第三方框架泛滥的今天,你是不是也想去做出自己的框架呢.本篇详解Android自定义框架的方法. 本文方法来自官方文档,是绝对靠谱的方法. 1.创建一个Android project. 2.实现自己的实现代码.res文件(layout, drawable都可以) 3.如果有 Activity, Service, Broadcast Receiver什么的要提供给其他程序用, 要在AndroidManifest.xml 声明. 4. 最后一步:在项目属性properties -> Android->
android中dip、dp、px、sp和屏幕密度详解
1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这 这个,不依赖像素.这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示.在屏幕密度为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是屏幕密度没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基
Android拼图游戏开发全纪录0
最近刚完成一个Android的小项目--拼图游戏.项目并不复杂,但也是一个完整的项目,用到的知识点还是比较丰富的. 做完之后照例进行下总结: 需求定义: 1.选择图片后进入拼图界面,可以选择默认图片或者自定义图片,即从图库选择或者从相机拍照. 2.可以设置游戏的难度,即选择拼图为NXN结构. 3.自动打乱拼图的顺序,利用倒置和算法,确保生成的数据有解. 4.拼图过程中可以查看原图. 5.拼图具有计时.记步功能. 6.完成拼图后显示全部图片并提升拼图成功. 7.可以查看历史记录. *8.利用IDA
Android异步加载全解析之Bitmap
Android异步加载全解析之Bitmap 在这篇文章中,我们分析了Android在对大图处理时的一些策略--Android异步加载全解析之大图处理 戳我戳我 那么在这篇中,我们来对图像--Bitmap进行一个更加细致的分析,掌握Bitmap的点点滴滴. 引入 Bitmap这玩意儿号称Android App头号杀手,特别是3.0之前的版本,简直就是皇帝般的存在,碰不得.摔不得.虽然后面的版本Android对Bitmap的管理也进行了一系列的优化,但是它依然是非常难处理的一个东西.在Androi
Creating Apps With Material Design —— Defining Custom Animations
转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢 定义动画 在材料设计动画让用户与您的应用程序进行交互时,为他们的行为提供反馈,并提供可视化的连续性.该材料的主题提供了一些默认的动画按钮和活动过渡,而Android5.0(API等级21)以上,您可以自定义这些动画和创建新的: 触摸反馈 通告显示 活动转变 曲线运动 视图状态更改 自定义触摸反馈
通过Python处理Android API Doc离线访问
原因大家应该都知道,离线下载的SDK Api本地也无法打开,其实主要就是因为这些Doc中有去访问google的一些网站:font.js api等等,因此,要真正离线使用Doc,有两个方法可以实现: 1.真正的离线--即把网断掉,这样确实可以,但是,使用起来太不方便了 2.把API Doc中的所有请求font.js api的内容都删掉,不过,这个过程太痛苦了,API Doc有几万个文件,总不能一个个删,所以,祭出Python,秒秒钟搞定,代码如下: import os s1 = '''<link
Creating Apps With Material Design —— Maintaining Compatibility
转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢 保持兼容性 如material design和自定义活动的过渡部分材料设计功能只能在Android5.0(API等级21)以上.不过,你可以设计你的应用程序在支持材料设计,仍然与设备运行的是Android的早期版本兼容的设备上运行. 定义可替换的风格 你可以配置你的应用程序使用的材料主题在支持它,并恢复到运行早期版本的Android设备较
我也来开发2048之方块设计
这次我们的任务是实现游戏面板上的一个个小方块,我们的主面板是一个GridLayout,我们把小方块一个个加到GridLayout中,就形成了我们现在的这个游戏面板. 小方块还是比较简单的,关键是,如何做才能最有效率呢?这是我们一直考虑的,也算是职业强迫症吧,我们的小方块上其实就是显示一个数字,所以,我们可以用一个TextView或者ImageView,这个随意了,看以后的打算,是否需要自定义图片呀等等,我们暂时就用一个TextView吧,简单. 父布局选择什么呢?其实因为我们就一个子View,所
Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案
为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view; import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.GestureDetector; im
Android异步加载全解析之引入二级缓存
Android异步加载全解析之引入二级缓存 为啥要二级缓存 前面我们有了一级缓存,为啥还要二级缓存呢?说白了,这就和电脑是一样的,我们电脑有内存和硬盘,内存读取速度快,所以CPU直接读取内存中的数据,但是,内存资源有限,所以我们可以把数据保存到硬盘上,这就是二级缓存,硬盘虽然读取速度慢,但是人家容量大. Android的缓存技术也是使用了这样一个特性,总的来说,使用二级缓存的方案,就是先从一级缓存--内存中拿,没有的话,再去二级缓存--手机中拿,如果还没有,那就只能去下载了. 有了DiskLru
ListView详解4
四.BaseAdapter BaseAdapter是一个公共基类适配器,直接提供相关控件的数据提供. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:
通过反射的方式解析R文件
在android里通过xml布局文件寻找某个控件时,我们通常做法是通过R文件来指向 如: findById(R,id.xx); 但其实还有另外一种方法来获取控件 >>反射 如 : name : id的命名 findById(context.getResource().getIdentifier(name,"id",context.getPackageName)); 如此类推: 获取string类型 name : string的命名 findById(context.getR