zoukankan      html  css  js  c++  java
  • Android 滑动改变视频音量和视频缩略图

      /**
       * 滑动 改变音量
       * @param percent
       */
      private void onVolumn(float percent) {
        if(mVolumn == -1){
          mVolumn = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); //获取当前音量
                 if(mVolumn < 0){
               mVolumn = 0;
         }    
           //显示
         mOperationBg.setImageResource(R.drawable.video_volumn_bg);
           mOperationVolumnBrightness.setVisibility(View.VISIBLE);
      }   
       int index = (int) (percent * mMaxVolume + mVolumn);   
       if(index > mMaxVolume){
         index = mMaxVolume;
       } else if(index < 0){
         index = 0;
       }   
       mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, index, 0);  //设置音量   
       LayoutParams lp = mOperationPercent.getLayoutParams();
       lp.width = findViewById(R.id.operation_full).getLayoutParams().width * index / mMaxVolume;
       mOperationPercent.setLayoutParams(lp);
      }

      /**
       * 滑动 改变亮度
       * @param percent
       */
      private void onBrightness(float percent) {
        if(mBrightness == -1f){
           mBrightness = getWindow().getAttributes().screenBrightness;
           if(mBrightness < 0.01f){
             mBrightness = 0.50f;
            }    
              mOperationBg.setImageResource(R.drawable.video_brightness_bg); //显示
            mOperationVolumnBrightness.setVisibility(View.VISIBLE);
        
         }   
         WindowManager.LayoutParams lpa = getWindow().getAttributes();
         lpa.screenBrightness = mBrightness + percent;
       
         if(lpa.screenBrightness > 1.0f){
           lpa.screenBrightness = 1.0f;
         } else if(lpa.screenBrightness < 0.01f){
           lpa.screenBrightness = 0.01f;
         }
        getWindow().setAttributes(lpa); //改变亮度   
         LayoutParams lp = mOperationPercent.getLayoutParams();
         lp.width = (int) (findViewById(R.id.operation_full).getLayoutParams().width * lpa.screenBrightness);
         mOperationPercent.setLayoutParams(lp);
      }
     private void init() {
       String[] thumbColumns = new String[]{
           MediaStore.Video.Thumbnails.VIDEO_ID,
           MediaStore.Video.Thumbnails.DATA//缩略图路径
      };
      
     String[] MediaColums = new String[]{
       MediaStore.Video.Media._ID,
          MediaStore.Video.Media.TITLE,//视频名称
          MediaStore.Video.Media.DATA,//视频路径
    //    MediaStore.Video.Media.DURATION,
    //    MediaStore.Video.Media.SIZE
     };
      
      cursor = this.managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, MediaColums, null, null, null);  
      videoList = new ArrayList<VideoInfo>();  
      if(cursor.moveToFirst()){
       do{
        VideoInfo info = new VideoInfo();
        //获取视频名称
        info.videoTitle = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
        //获取视频的路径
        info.videoPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
        
        //获取视频缩略图的路径
        
        String selection = MediaStore.Video.Media._ID + "=?";
        
        int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
        String[] selectionArgs = new String[]{
          id+""
        };
        
        Cursor thumbCursor = this.managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, thumbColumns, selection, selectionArgs, null);
        
        if(thumbCursor != null){
         //完成获取视频缩略图的路径
         info.thumbPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Thumbnails.DATA));
    //     info.thumbPath = thumbCursor.getString(thumbCursor.getColumnIndexOrThrow(MediaStore.Video.Thumbnails.DATA));
        }
        
        videoList.add(info);
        
       } while(cursor.moveToNext());
      }
      
      VideoAdapter adapter = new VideoAdapter(this, videoList);
      getListView().setAdapter(adapter);
      
     }
     
     static class VideoInfo {
      String thumbPath;//缩略图路径
      String videoTitle;//视频名字
      String videoPath;//视频的路径
     }


      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
       ViewHolder holder = null;
       if(convertView == null){
        holder = new ViewHolder();
        convertView = getLayoutInflater().inflate(R.layout.list_item, null);
        holder.thumbImage = (ImageView) convertView.findViewById(R.id.thumb_image);
        holder.videoTitle = (TextView) convertView.findViewById(R.id.video_title);
        convertView.setTag(holder);
       } else {
        holder = (ViewHolder) convertView.getTag();
       }
       
       //指定视频名字
       holder.videoTitle.setText(videoItems.get(position).videoTitle);
       
       //指定缩略图
       if(videoItems.get(position).thumbPath != null){
        Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(videoItems.get(position).thumbPath, Thumbnails.MINI_KIND);
        Bitmap bitmap1 = ThumbnailUtils.extractThumbnail(bitmap, 200, 200);
        BitmapDrawable db = new BitmapDrawable(bitmap1);
        holder.thumbImage.setImageDrawable(db);
       }
       
        return convertView;
      }
      
      class ViewHolder {
       ImageView thumbImage;
       TextView videoTitle;
      }

    main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <io.vov.vitamio.widget.VideoView
            android:id="@+id/surfaceview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true" />

        <FrameLayout
            android:id="@+id/operation_volumn_brightness"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="#00000000"
            android:padding="0dip"
            android:visibility="invisible" >

            <ImageView
                android:id="@+id/operation_bg"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/video_volumn_bg" />

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|bottom"
                android:paddingBottom="25dip" >

                <ImageView
                    android:id="@+id/operation_full"
                    android:layout_width="94dip"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:src="@drawable/video_num_bg" />

                <ImageView
                    android:id="@+id/operation_percent"
                    android:layout_width="0dip"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:scaleType="matrix"
                    android:src="@drawable/video_num_front" />
            </FrameLayout>
        </FrameLayout>

    </RelativeLayout>


    view_list.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:id="@+id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true" >

            <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip" />
        </RelativeLayout>

    </RelativeLayout>


    view_list.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <ImageView
            android:id="@+id/thumb_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dip"
            android:background="@drawable/sms" />

        <TextView
            android:id="@+id/video_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dip"
            android:layout_toRightOf="@id/thumb_image"
            android:singleLine="true"
            android:textSize="18sp"
            android:textStyle="bold" />

    </RelativeLayout>

  • 相关阅读:
    创建一个 mac 的后台进程(daemon)
    Centos 7创建一个服务
    MAC配置VIM环境
    Spark源码剖析(九):TaskScheduler原理与源码剖析
    Spark源码剖析(八):stage划分原理与源码剖析
    教你如何写递归(数学归纳法,干货强推!)
    Spark源码剖析(七):Job触发流程原理与源码剖析
    剑指offer:变态跳台阶
    Spark源码剖析(六):Worker原理与源码剖析
    Spark源码剖析(五):Master原理与源码剖析(下)
  • 原文地址:https://www.cnblogs.com/zhangping/p/3514200.html
Copyright © 2011-2022 走看看