소스 검색

优化视频列表中的视频宽度显示

zengjiebin 7 년 전
부모
커밋
ad0e825147

+ 31 - 0
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -20,6 +20,7 @@ import android.net.Uri;
 import android.os.Build;
 import android.provider.MediaStore;
 import android.support.annotation.LayoutRes;
+import android.support.annotation.Nullable;
 import android.support.annotation.StringRes;
 import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
@@ -56,7 +57,11 @@ import android.widget.VideoView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.RequestBuilder;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.engine.GlideException;
+import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.RequestOptions;
+import com.bumptech.glide.request.target.Target;
 import com.jcodecraeer.xrecyclerview.CustomFooterViewCallBack;
 import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
@@ -1753,6 +1758,32 @@ public class ViewUtil {
     public static void setViewWH(View view, int width, float radio) {
         LayoutParamsUtil.resetLayoutParams(view, new Lp().setWidth(width).setHeight((int) (width * radio)));
     }
+    public static void setImageWH(ImageView view, Object url, int width, int radius) {
+        if(url == null || view == null){
+            return;
+        }
+        Glide.with(SheepApp.getInstance())
+                .load(url)
+                .listener(new RequestListener<Drawable>() {
+                    @Override
+                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
+                        return false;
+                    }
+
+                    @Override
+                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
+                        int w = resource.getIntrinsicWidth();
+                        int h = resource.getIntrinsicHeight();
+                        if(w > 0 && h > 0) {
+                            float radio = h * 1.0f / w;
+                            ViewUtil.setViewWH(view, width, radio);
+                        }
+                        return false;
+                    }
+                })
+                .apply(new RequestOptions().transform(new RoundedCornersTransformation(radius, 0)).placeholder(R.drawable.loading_01))
+                .into(view);
+    }
 
     public static void setImagePath(ImageView imageView, String paths) {
         if (imageView != null) {

+ 2 - 4
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpVideo.java

@@ -4,8 +4,6 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.RequestOptions;
 import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
 import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
@@ -38,8 +36,8 @@ public class AdpVideo extends RecyclerViewAdapter<DiscoveryVideo> {
         ImageView item_video_cover = viewHolder.itemView.findViewById(R.id.item_video_cover);
         TextView item_video_play_no_tv = viewHolder.itemView.findViewById(R.id.item_video_play_no_tv);
         TextView item_video_time_tv = viewHolder.itemView.findViewById(R.id.item_video_time_tv);
-        ViewUtil.setViewWH(item_video_cover, item.getCover(), width);
-        ViewUtil.setImage(item_video_cover, item.getCover(), G.getRealPix(5));
+//        ViewUtil.setViewWH(item_video_cover, item.getCover(), width);
+        ViewUtil.setImageWH(item_video_cover, item.getCover(), width, G.getRealPix(5));
         ViewUtil.setVisibility(item_video_play_no_tv, item.getPlay() > 0);
         ViewUtil.setText(item_video_play_no_tv, String.format(Locale.CHINA, "%s次播放", NumberFormatUtils.getText(item.getPlay())));
         ViewUtil.setText(item_video_time_tv, TimeUtil.getDurationText(item.getDuration()));

+ 0 - 2
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtVideoFrameList.java

@@ -122,8 +122,6 @@ public class FgtVideoFrameList extends BaseFragment {
                             if (result instanceof Video) {
                                 Video video = (Video) result;
                                 data.setFilePath(video.getFilePath());
-                                data.setWidth(video.getWidth());
-                                data.setHeight(video.getHeight());
                                 data.setDuration(video.getDuration());
                                 baseActivity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + video.getFilePath())));
                                 baseActivity.hideProgress();

+ 1 - 0
media/app/src/main/java/com/kfzs/cfyl/media/util/VideoUtil.java

@@ -191,6 +191,7 @@ public class VideoUtil {
         LogUtil.println(TAG, filePath, clipPoint, clipDuration);
         String outFilePath = getCutVideoFilePath(filePath, clipPoint, clipDuration);
         video.setFilePath(outFilePath);
+        video.setDuration(clipDuration);
         //开始剪切
         EpVideo epVideo = new EpVideo(filePath);
 //输出选项,参数为输出文件路径(目前仅支持mp4格式输出)