代码不多,就懒得加注释了.原谅我的懒.

缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现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 仿美拍,秒拍 ,视频封面选择.有图有真相.相关推荐

  1. android仿秒拍首页点击视频无缝播放器,Android 仿美拍,秒拍 ,视频封面选择.有图有真相....

    代码不多,就懒得加注释了.原谅我的懒. 缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现FC的情况.需要的童鞋.自行添加. 附代码: package com.tan.video ...

  2. android仿秒拍首页点击视频无缝播放器,Android 仿美拍,秒拍 ,视频封面选择.有图有真相....

    代码不多,就懒得加注释了.原谅我的懒. 缩略图获取那块,没有加用线程.可能会在有些低端机上面或者高清的视频会出现FC的情况.需要的童鞋.自行添加. 附代码: package com.tan.video ...

  3. Android 仿微信录制短视频(不使用 FFmpeg)

    转载请标明出处与作者:https://blog.csdn.net/u011133887/article/details/83654724 项目中原本就有录制短视频的功能,使用的是 # qdrzwd/V ...

  4. Android仿微信录制短视频

    WxRecoderVideo 简介 基于VCamera,Android仿微信录制短视频,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request. 使用 ...

  5. android高仿微信小视频,Android仿微信录制小视频

    本文实例为大家分享了Android仿微信录制小视频的具体代码,供大家参考,具体内容如下 先上张图片看看效果 简单叙述下 首先通过Camera类调用系统相机 通过surfaceview绘制出来 通过Me ...

  6. Android 仿淘宝详情视频图片混合轮播

    implementation 'com.github.bumptech.glide:glide:4.11.0' implementation 'androidx.recyclerview:recycl ...

  7. android 仿抖音 编辑视频,Android 仿抖音之使用OpenGL实现抖音视频录制

    前言 在之前写了仿抖音的第一步,就是使用OpenGL显示摄像头数据,今天这篇就是在之前的基础上来录制视频,并且对之前的代码的结构进行了简单的整理,然后进行了仿抖音的视频录制. 工程结构整理 在仿抖音的 ...

  8. 【Android开发】 获取本地视频封面

    获取本地视频封面 或许你遇到这样的场景,想做一个视频播放器,视频在播放之前展示一个封面图,想截取某一帧/第一帧作为封面图.要实现这个功能,只需要使用 Android 系统 api 提供的 MediaM ...

  9. 【分享】性能比肩美拍秒拍的Android视频录制编辑特效解决方案【1】

    前言 本人接触Android的时间有限,如果您有更好的解决方案,欢迎吐槽. 众所周知,Android平台开发分为Java层和C++层,即Android SDK和Android NDK.常规产品功能只需 ...

最新文章

  1. 高并发场景下创建多少线程才合适?一条公式帮你搞定!!
  2. POJ 2828 Buy Tickets 线段树
  3. 牛客网剑指offer编程实践51-66题
  4. Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
  5. AOP Aspect Oriented Programming
  6. php处理mysql的符号_MySQL数据入库时特殊字符处理
  7. 【报错】Error inserting GREEM=30 YELLOW=4 RED=5 android.database.sqlite.SQLiteException: no such tab
  8. Millumin 3 for mac使用教程-创建一个简单的视频映射
  9. arduino UNO 点亮LED例程
  10. 鸟哥的Linux私房菜-服务器架设篇
  11. html中td是什么模块,html td什么意思
  12. 多点生活的分布式服务框架DSF
  13. js经典代码200句
  14. 【双端队列广搜/搜索+图论】AcWing 2019.拖拉机 USACO 2012 March Contest Silver Division
  15. 通过MediaRecorder 录制视频的时候,魅族手机录制视频后,大小显示0
  16. Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂
  17. 用Nonebot2搭建QQ机器人(一):我的学习经历(一)
  18. 猜数游戏(GAMBLER)
  19. 什么是5G SAR测试,FCC/CE中5G Sub-6GHz与5G 毫米波测试,5G毫米波测试
  20. WinRAR 3.51 注册码

热门文章

  1. Android按键音
  2. 阿里云服务器ECS实例规格性能区别及选择攻略
  3. H3 R4900 G3装系统详细步骤
  4. 2020 android 新功能,少了它,你就OUT了!2020年安卓旗舰手机 新技术盘点与展望
  5. 附录三 虚拟机的使用
  6. 如何获取微信小程序包
  7. java卡牌游戏详解
  8. 《Deep Learning for Computer Vision withPython》阅读笔记-StarterBundle(第6 - 7章)
  9. 【数据预处理】Pandas缺失的数据处理
  10. 详解量子计算:相位反冲与相位反转