Android 仿美拍,秒拍 ,视频封面选择.有图有真相.
代码不多,就懒得加注释了.原谅我的懒.
缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现FC的情况.需要的童鞋.自行添加.
附代码:
package com.tan.videoselectthumbnail;import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;import com.tan.videoselectthumbnail.R;import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;public class MainActivity extends Activity {private static LinearLayout linearLayout;private static Context context;private RelativeLayout rl_l;private ImageView imageviewPreview,ivw_to2;private GestureDetector mGestureDetector;private RelativeLayout.LayoutParams lp;private List<Bitmap> bitmaps;private int wWidth,iWidth,tWidth;private int arrayWidth[];protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);linearLayout=(LinearLayout) findViewById(R.id.ll);context=this;rl_l=(RelativeLayout) findViewById(R.id.rl_l);imageviewPreview=(ImageView) findViewById(R.id.ivw_to);ivw_to2=(ImageView) findViewById(R.id.ivw_to2);Uri uri=Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.test); bitmaps=new ArrayList<Bitmap>();getVideoThumbnail(uri);rl_l.setOnTouchListener(new OnTouchListener() {public boolean onTouch(View v, MotionEvent event) {return (mGestureDetector != null)&& mGestureDetector.onTouchEvent(event);}});lp=(android.widget.RelativeLayout.LayoutParams) imageviewPreview.getLayoutParams();mGestureDetector = new GestureDetector(this,new CoverGestureListener());wWidth=getWindowManager().getDefaultDisplay().getWidth();}public void onWindowFocusChanged(boolean hasFocus) {iWidth=imageviewPreview.getWidth();iWidth=wWidth-iWidth;tWidth=iWidth/10;arrayWidth=new int[10];for(int i=0;i<10;i++){arrayWidth[i]=tWidth+(i*tWidth);}seekTo(0);super.onWindowFocusChanged(hasFocus);}private void seekTo(float paramFloat) {float f = paramFloat - this.imageviewPreview.getWidth() / 2;if(f<0){f=0;}if(f>iWidth){f=iWidth;}lp.leftMargin = ((int) f);for(int i=0;i<arrayWidth.length;i++){if(arrayWidth[i]>=f){imageviewPreview.setImageBitmap(bitmaps.get(i));ivw_to2.setImageBitmap(bitmaps.get(i));break;}}this.imageviewPreview.setLayoutParams(this.lp);}private class CoverGestureListener extends GestureDetector.SimpleOnGestureListener {public boolean onDown(MotionEvent e) {seekTo(e.getX());return true;}public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {float f = e2.getX();seekTo(f);return super.onScroll(e1, e2, distanceX, distanceY);}}public void getVideoThumbnail(Uri uri) {Bitmap bitmap=null;MediaMetadataRetriever retriever = new MediaMetadataRetriever();try {retriever.setDataSource(context, uri);String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);int seconds=Integer.valueOf(time)/1000;int timeS=Integer.valueOf(time)/10;for(int i=1;i<=10;i++){bitmap=retriever.getFrameAtTime(i*timeS*1000,MediaMetadataRetriever.OPTION_CLOSEST);bitmaps.add(bitmap);addImgView(bitmap);}} catch (IllegalArgumentException e) {e.printStackTrace();} catch (RuntimeException e) {e.printStackTrace();} finally {try {retriever.release();} catch (RuntimeException e) {e.printStackTrace();}}}public void addImgView(Bitmap bitmap){SquareImageView imageView=new SquareImageView(context);LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);lp.weight=1;imageView.setLayoutParams(lp);imageView.setImageBitmap(bitmap);linearLayout.addView(imageView);}
}
因为是demo所以代码写的比较乱,将就着看吧.哈哈.
demo链接:bin目录下有apk 可直接拖到模拟器里面看效果.
链接:https://share.weiyun.com/5PJu9Ys
Android 仿美拍,秒拍 ,视频封面选择.有图有真相.相关推荐
- android仿秒拍首页点击视频无缝播放器,Android 仿美拍,秒拍 ,视频封面选择.有图有真相....
代码不多,就懒得加注释了.原谅我的懒. 缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现FC的情况.需要的童鞋.自行添加. 附代码: package com.tan.video ...
- android仿秒拍首页点击视频无缝播放器,Android 仿美拍,秒拍 ,视频封面选择.有图有真相....
代码不多,就懒得加注释了.原谅我的懒. 缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现FC的情况.需要的童鞋.自行添加. 附代码: package com.tan.video ...
- Android 仿微信录制短视频(不使用 FFmpeg)
转载请标明出处与作者:https://blog.csdn.net/u011133887/article/details/83654724 项目中原本就有录制短视频的功能,使用的是 # qdrzwd/V ...
- Android仿微信录制短视频
WxRecoderVideo 简介 基于VCamera,Android仿微信录制短视频,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request. 使用 ...
- android高仿微信小视频,Android仿微信录制小视频
本文实例为大家分享了Android仿微信录制小视频的具体代码,供大家参考,具体内容如下 先上张图片看看效果 简单叙述下 首先通过Camera类调用系统相机 通过surfaceview绘制出来 通过Me ...
- Android 仿淘宝详情视频图片混合轮播
implementation 'com.github.bumptech.glide:glide:4.11.0' implementation 'androidx.recyclerview:recycl ...
- android 仿抖音 编辑视频,Android 仿抖音之使用OpenGL实现抖音视频录制
前言 在之前写了仿抖音的第一步,就是使用OpenGL显示摄像头数据,今天这篇就是在之前的基础上来录制视频,并且对之前的代码的结构进行了简单的整理,然后进行了仿抖音的视频录制. 工程结构整理 在仿抖音的 ...
- 【Android开发】 获取本地视频封面
获取本地视频封面 或许你遇到这样的场景,想做一个视频播放器,视频在播放之前展示一个封面图,想截取某一帧/第一帧作为封面图.要实现这个功能,只需要使用 Android 系统 api 提供的 MediaM ...
- 【分享】性能比肩美拍秒拍的Android视频录制编辑特效解决方案【1】
前言 本人接触Android的时间有限,如果您有更好的解决方案,欢迎吐槽. 众所周知,Android平台开发分为Java层和C++层,即Android SDK和Android NDK.常规产品功能只需 ...
最新文章
- 高并发场景下创建多少线程才合适?一条公式帮你搞定!!
- POJ 2828 Buy Tickets 线段树
- 牛客网剑指offer编程实践51-66题
- Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
- AOP Aspect Oriented Programming
- php处理mysql的符号_MySQL数据入库时特殊字符处理
- 【报错】Error inserting GREEM=30 YELLOW=4 RED=5 android.database.sqlite.SQLiteException: no such tab
- Millumin 3 for mac使用教程-创建一个简单的视频映射
- arduino UNO 点亮LED例程
- 鸟哥的Linux私房菜-服务器架设篇
- html中td是什么模块,html td什么意思
- 多点生活的分布式服务框架DSF
- js经典代码200句
- 【双端队列广搜/搜索+图论】AcWing 2019.拖拉机 USACO 2012 March Contest Silver Division
- 通过MediaRecorder 录制视频的时候,魅族手机录制视频后,大小显示0
- Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂
- 用Nonebot2搭建QQ机器人(一):我的学习经历(一)
- 猜数游戏(GAMBLER)
- 什么是5G SAR测试,FCC/CE中5G Sub-6GHz与5G 毫米波测试,5G毫米波测试
- WinRAR 3.51 注册码