位置: 编程技术 - 正文

关于Android查询本地视频文件、获取缩略图,并且让缩略图以相同大小显示、给缩略图添加白色边框效果(android查询数据库)

编辑:rootadmin

推荐整理分享关于Android查询本地视频文件、获取缩略图,并且让缩略图以相同大小显示、给缩略图添加白色边框效果(android查询数据库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android查询数据的方法,android query 查询数据库,android对数据库的表进行查询操作,安卓查询语句,android query 查询数据库,android对数据库的表进行查询操作,android实现查询功能,android query 查询数据库,内容如对您有帮助,希望把文章链接给更多的朋友!

最近工作中遇到要查询本地的视频文件,以GridView分页显示视频缩略图,并且对不同视频分辨率的缩略图显示相同的大小,还要对缩略图添加圆角以及白色边框的效果。

用Cursor来查询本地的视频文件,将所有的文件添加到一个list中,代码如下:

public List<Video> getList() { list = null; if (getActivity()!= null) { Cursor cursor = getActivity().getContentResolver().query( MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, null, null); if (cursor != null) { list = new ArrayList<Video>(); while (cursor.moveToNext()) { int id = cursor.getInt(cursor .getColumnIndexOrThrow(MediaStore.Video.Media._ID)); String title = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)); String album = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.ALBUM)); String artist = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.ARTIST)); String displayName = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)); String mimeType = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)); String path = cursor .getString(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.DATA)); Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(path, Thumbnails.MINI_KIND); long duration = cursor .getInt(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)); long size = cursor .getLong(cursor .getColumnIndexOrThrow(MediaStore.Video.Media.SIZE)); if(thumbnail!=null){ Bitmap output = Bitmap.createBitmap(zoomImage(thumbnail,,).getWidth(), zoomImage(thumbnail,,).getHeight(), Config.ARGB_); //得到画布 Canvas canvas = new Canvas(output); //将画布的四角圆化 final Paint paint = new Paint(); //得到与图像相同大小的区域 由构造的四个&#;决定区域的位置以及大小 final Rect rect = new Rect(0, 0, output.getWidth(), output.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); //drawRoundRect的第2,3个参数一样则画的是正圆的一角,如果数&#;不同则是椭圆的一角 canvas.drawRoundRect(rectF, ,, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(thumbnail, rect, rect, paint); thumbnail = output; Video video2 = new Video(id, title, album, artist, displayName, mimeType, path, size, duration,thumbnail); list.add(video2); } } cursor.close(); } } return list; }

list中存放Video类,Video是一个视频类,包括视频的各种属性、构造方法、get、set方法,此处忽略。通过Cursor获得video的各种属性,其中Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(path, Thumbnails.MINI_KIND);是获得缩略图的关键,得到的是一个bitmap,path是video的路径,通过cursor可获得。

接下来,if语句中就是对缩略图的处理。其中zoomImage(BItmap,double,double);方法是缩放图片,如下:

关于Android查询本地视频文件、获取缩略图,并且让缩略图以相同大小显示、给缩略图添加白色边框效果(android查询数据库)

public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth)/width; float scaleHeight = ((float) newHeight)/height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap;}

通过该方法就可以得到指定大小的图片,再将图片圆角化处理即可。至于缩略图的白色边框,只需给GridView的item加一张中间透明的背景图片即可。当然,你得按照背景图片的大小合理调整缩略图的缩放比例,以保证缩略图和背景图片刚好融合。

在这个项目中,一开始做法是先将缩略图圆角处理,但是由于视频分辨率不同,缩略图的大小不同,要使缩略图显示大小相同,就必须放缩,放缩之后圆角就会变形。所以,关键点就在于先缩放图片,再圆角处理。

ps:由于是新手,很多东西还存在缺陷,欢迎大牛批评指正。另外,有想进行交流的,欢迎留言。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android通过HttpURLConnection获取JSON并进行UI更新 本例子中使用的是:HttpURLConnectionThreadHandler的组合,在newThread中通过HttpURLConnection获取JSON数据后并在Handler里对UI界面进行更新。也可以用过HttpClient,Asyn

AnalogClock 网上看过很多人写的AnalogClock,但是很多都不完整或无法运行,于是自己结合DeskClock源码,写了一个小的demo,步骤大致入如下:1、自定义View,通过Analog

屏蔽系统锁屏的正确方法,亲测有效! 先给大家看段对码:mKeyguard=(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);mKeylock=mKeyguard.newKeyguardLock(quot;quot;);mKeylock.disableKeyguard();做过系统锁屏服务程

标签: android查询数据库

本文链接地址:https://www.jiuchutong.com/biancheng/378076.html 转载请保留说明!

上一篇:sqlcipher 命令行给db外部加密的实现(sql命令语句)

下一篇:Android通过HttpURLConnection获取JSON并进行UI更新

  • 税务金三系统是什么?
  • 企业所得税季度预缴怎么计算
  • 企业的培训费会计分录
  • 51电子发票客户端后使用教程
  • 2021留美学生签证
  • 对外销售的材料的成本应计入什么账户
  • 物业企业门禁卡如何记账?
  • 银行的期初数据怎么进行账务处理?
  • 民办非企业单位是什么单位性质
  • 系统技术维护费计入什么科目
  • 购买办公用品账务处理
  • 企业支付的产品广告费应计入什么账户借方
  • 银行余额调节表模板
  • 安装工程劳务合同
  • 增值税普通发票查询真伪
  • 小规模企业残疾人免税政策
  • 可以抵扣的增值税计入什么科目
  • 企业大中小型划分最新标准
  • 资产负债表里应交税费里都包含什么
  • 2020年运费发票备注栏新规定
  • gitlab lint
  • 三星笔记使用攻略
  • Mac怎么更改锁屏密码
  • Win11怎么不显示图标
  • 怎么把qq垃圾全部清除
  • 公司雇用临时工人工资需要到税务局开发票吗
  • Msssrv.exe - Msssrv是什么进程 有什么用
  • 安卓车机系统开发
  • 超市购物增值税怎么算
  • 资产负债表和利润表的利润不一致
  • vue清空form数据再重新赋值
  • 中国移动常被称为
  • 命令启动服务管理
  • 中国石化电子发票平台官网
  • 最新税法规定小车折旧年限
  • 已交土地使用金的划拨商品房与商品房的的区别
  • 补交上年度的企业所得税税款计入什么科目
  • 再生资源回收企业现状
  • 一般纳税人和小规模公司怎么区分
  • 金蝶怎么增加职员
  • 在excel中怎么制作
  • 管理费用增加是因为什么
  • 补贴收入是否缴纳个税
  • 个人独资公司对外如何承担责任
  • 分支机构注销后往来账如何处理?
  • 附加税减半征收实例账务处理
  • 分公司是否具有独立承担民事责任的能力
  • 缴纳上月增值税及本月预缴增值税
  • 长期应付账款是什么
  • 关税计入什么科目
  • 流动比率与速动比率下降说明什么
  • 资产折旧的计税基础
  • 一达通退税需要具备的条件?
  • 累计减免所得税
  • 应付职工薪酬为负数什么意思
  • 资产负债表上应交税费是什么意思
  • 公益募捐的基金是什么
  • 成本核算应设置哪些会计账户
  • mysql获取日期年份
  • Computer Browser是什么进程,Computer Browser有什么用?
  • zzs.exe是病毒吗
  • windows1020h2版本怎么样
  • win7系统电脑开不了机
  • jquery 限制文件大小
  • android 基础
  • node.js网站
  • shell脚本实现文件移动、复制等操作
  • android draglistview中拖动异常显示,无法移动到原先位置
  • androidのLinearLayout中组件右对齐
  • Javascript Object 对象学习笔记
  • js保存设置
  • android 界面切换
  • 云南地税局官网
  • 国家税务总局大连电子税务局
  • 回迁房有没有装电梯的
  • 重庆市网上审批服务大厅
  • 税务怎么报停
  • 苹果关税多少钱一个
  • 深圳国税局网站如何查询企业往年财务报表
  • 提供劳务者受害责任纠纷赔偿案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设