Переглянути джерело

修复media插件使用host中的布局,导致无法正常使用的bug;
修正磨皮美化效果

zengjiebin 7 роки тому
батько
коміт
804ab5320d

+ 10 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/ActVideoDetail.java

@@ -140,13 +140,19 @@ public class ActVideoDetail extends BaseUMActivity implements MediaPlayer.OnInfo
     }
 
     private void initPlay() {
-        Uri uri = Uri.parse(SheepApp.getHttpProxyCacheServer().getProxyUrl(video_url));
         videoView.setOnInfoListener(this);
         videoView.setOnPreparedListener(this);
         videoView.setOnErrorListener(this);
         videoView.setOnCompletionListener(this);
 //        videoView.setMediaController(new MediaController(this));
-        videoView.setVideoURI(uri);
+        videoView.setVideoURI(getUri());
+    }
+    //转化地址
+    private Uri getUri(){
+        String proxyUrl = SheepApp.getHttpProxyCacheServer().getProxyUrl(video_url);
+        Uri uri = Uri.parse(proxyUrl);
+        LogUtil.println(ActVideoDetail.class.getSimpleName(),"\n", video_url, "\n", proxyUrl);
+        return uri;
     }
 
     //点赞
@@ -446,9 +452,8 @@ public class ActVideoDetail extends BaseUMActivity implements MediaPlayer.OnInfo
                 DiscoveryVideo item = ListUtil.getItem(videoList, position);
                 if(item != null) {
                     initVideoData(item);
-                    Uri uri = Uri.parse(SheepApp.getHttpProxyCacheServer().getProxyUrl(video_url));
                     videoView.stopPlayback();
-                    videoView.setVideoURI(uri);
+                    videoView.setVideoURI(getUri());
                     videoView.requestFocus();
                 }
             } else if (event2.getX() - event1.getX() > FLING_MIN_DISTANCE
@@ -463,9 +468,8 @@ public class ActVideoDetail extends BaseUMActivity implements MediaPlayer.OnInfo
                 DiscoveryVideo item = ListUtil.getItem(videoList, position);
                 if(item != null) {
                     initVideoData(item);
-                    Uri uri = Uri.parse(SheepApp.getHttpProxyCacheServer().getProxyUrl(video_url));
                     videoView.stopPlayback();
-                    videoView.setVideoURI(uri);
+                    videoView.setVideoURI(getUri());
                     videoView.requestFocus();
                 }
             } else if (event2.getY() - event1.getY() > FLING_MIN_DISTANCE

+ 1 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -380,7 +380,7 @@ public class SheepApp extends MultiDexApplication {
     private HttpProxyCacheServer newHttpProxyCacheServer() {
         return new HttpProxyCacheServer.Builder(this)
                 .maxCacheSize(2L * 1024 * 1024 * 1024)       // 2 Gb for cache
-                .maxCacheFilesCount(20)////最多缓存个数
+                .maxCacheFilesCount(100)////最多缓存个数
                 .fileNameGenerator(new MyFileNameGenerator())
                 .build();
     }

+ 0 - 80
app/src/main/res/layout/fgt_choose_edit_list.xml

@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@drawable/shape_black_solid_rectangle_top_6">
-
-    <LinearLayout
-        android:id="@+id/fgt_choose_edit_list_ll"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        app:layout_constraintBottom_toBottomOf="parent">
-
-        <CheckedTextView
-            android:id="@+id/fgt_choose_edit_filter_tv"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:checked="true"
-            android:gravity="center"
-            android:paddingTop="18dp"
-            android:paddingBottom="18dp"
-            android:text="滤镜"
-            android:textAlignment="center"
-            android:textColor="@color/selector_color_white_40"
-            android:textSize="15sp" />
-
-        <CheckedTextView
-            android:id="@+id/fgt_choose_edit_buffing_tv"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:paddingTop="18dp"
-            android:paddingBottom="18dp"
-            android:text="磨皮"
-            android:textAlignment="center"
-            android:textColor="@color/selector_color_white_40"
-            android:textSize="15sp" />
-
-        <CheckedTextView
-            android:id="@+id/fgt_choose_edit_warping_tv"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:paddingTop="18dp"
-            android:paddingBottom="18dp"
-            android:text="大眼瘦脸"
-            android:textAlignment="center"
-            android:textColor="@color/selector_color_white_40"
-            android:textSize="15sp" />
-    </LinearLayout>
-
-    <View
-        android:id="@+id/fgt_choose_edit_line_v"
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:background="#545454"
-        app:layout_constraintBottom_toTopOf="@id/fgt_choose_edit_list_ll" />
-
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingStart="11dp"
-        android:paddingEnd="11dp"
-        app:layout_constraintBottom_toTopOf="@id/fgt_choose_edit_line_v" />
-
-    <SeekBar
-        android:id="@+id/fgt_choose_edit_intensity_sb"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dp"
-        android:max="100"
-        android:progress="100"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toTopOf="@id/recyclerView"/>
-</android.support.constraint.ConstraintLayout>

+ 10 - 0
media/app/build.gradle

@@ -51,6 +51,16 @@ android {
 
 }
 
+configurations.all {
+    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
+        def requested = details.requested
+        if (requested.group == 'com.android.support') {
+            if (!requested.name.startsWith("multidex")) {
+                details.useVersion "$supportLibVersion"
+            }
+        }
+    }
+}
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
 

+ 21 - 6
media/app/src/main/java/com/kfzs/cfyl/media/activity/ActEditVideo.java

@@ -17,6 +17,7 @@ import com.kfzs.cfyl.media.R;
 import com.kfzs.cfyl.media.api.Filterble;
 import com.kfzs.cfyl.media.api.IFilter;
 import com.kfzs.cfyl.media.api.Levelble;
+import com.kfzs.cfyl.media.bean.BeautifyFilter;
 import com.kfzs.cfyl.media.bean.Size;
 import com.kfzs.cfyl.media.fragment.FgtChooseEditList;
 import com.kfzs.cfyl.media.util.BitmapUtil;
@@ -50,7 +51,7 @@ public class ActEditVideo extends BaseContainerActivity implements Filterble, Le
 
     private String mCurrentConfig;//滤镜配置
     private float mIntensity = 1.0f;
-    private int mIntensityLevel = 1;//磨皮系数
+    private int mBeautifyLevel = -1;//磨皮系数
 
     public static final int REQUEST_CODE_PICK_VIDEO = 1;
 
@@ -154,27 +155,41 @@ public class ActEditVideo extends BaseContainerActivity implements Filterble, Le
         return outputFilename;
     }
 
+    private IFilter filter;
     //设置滤镜
     @Override
     public void setFilter(IFilter filter) {
         if (mPlayerView != null && filter != null && filter.getConfig() != null) {
-            mCurrentConfig = filter.getConfig();
-            mPlayerView.setFilterWithConfig(mCurrentConfig);
+            this.filter = filter;
+            initCurrentConfig();
         }
     }
+    private void initCurrentConfig(){
+        StringBuilder config = new StringBuilder();
+        if(filter != null){
+            config.append(filter.getConfig());
+            config.append(" ");
+        }
+        if(mBeautifyLevel > -1){
+            config.append(BeautifyFilter.getConfig(mBeautifyLevel, G.WIDTH, G.HEIGHT));
+        }
+        mCurrentConfig = config.toString();
+        mPlayerView.setFilterWithConfig(mCurrentConfig);
+    }
 
     @Override
     public void setFilterIntensity(float intensity) {
         if (mPlayerView != null) {
             mIntensity = intensity;
-            mPlayerView.setFilterIntensity(mIntensity * mIntensityLevel);
+            mPlayerView.setFilterIntensity(mIntensity);
         }
     }
     @Override
     public void setLevel(int level) {
+        LogUtil.println(ActEditVideo.class.getSimpleName(), "setLevel", level);
         if (mPlayerView != null) {
-            mIntensityLevel = level;
-            mPlayerView.setFilterIntensity(mIntensity * mIntensityLevel);
+            mBeautifyLevel = level;
+            initCurrentConfig();
         }
     }
 

+ 5 - 1
media/app/src/main/java/com/kfzs/cfyl/media/bean/BeautifyFilter.java

@@ -61,6 +61,10 @@ public class BeautifyFilter implements IFilter {
 
     @Override
     public String getConfig() {
-        return String.format(Locale.CHINA, "@beautify face %d %d %d", type, width, height);
+        return getConfig(type, width, height);
+    }
+
+    public static String getConfig(int level, int width, int height){
+        return String.format(Locale.CHINA, "@beautify face %d %d %d", level, width, height);
     }
 }

+ 7 - 18
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtChooseEditList.java

@@ -2,28 +2,13 @@ package com.kfzs.cfyl.media.fragment;
 
 import android.support.v4.app.Fragment;
 import android.support.v4.view.ViewPager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.CheckedTextView;
-import android.widget.ImageView;
-import android.widget.SeekBar;
 
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
 import com.kfzs.cfyl.media.BaseFragment;
 import com.kfzs.cfyl.media.R;
 import com.kfzs.cfyl.media.adapter.ViewPagerFragmentAdapter;
-import com.kfzs.cfyl.media.bean.BeautifyFilter;
-import com.kfzs.cfyl.media.bean.ColorBalanceFilter;
-import com.kfzs.cfyl.media.bean.Filter;
-import com.kfzs.cfyl.media.bean.Lp;
-import com.kfzs.cfyl.media.bean.WaveFilter;
-import com.kfzs.cfyl.media.api.Filterble;
 import com.kfzs.cfyl.media.util.G;
-import com.kfzs.cfyl.media.api.IFilter;
-import com.kfzs.cfyl.media.util.LayoutParamsUtil;
-import com.kfzs.cfyl.media.util.ViewUtil;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -43,7 +28,7 @@ public class FgtChooseEditList extends BaseFragment {
 
     @Override
     public int getLayoutId() {
-        return R.layout.fgt_choose_edit_list;
+        return R.layout.media_fgt_choose_edit_list;
     }
 
     @Override
@@ -88,8 +73,12 @@ public class FgtChooseEditList extends BaseFragment {
         fragmentList.add(new FgtChooseFilterList());
         fragmentList.add(new FgtChooseLevelList());
         ViewPagerFragmentAdapter mViewPagerFragmentAdapter = new ViewPagerFragmentAdapter(getChildFragmentManager(), fragmentList);
-        fgt_choose_edit_view_pager.setAdapter(mViewPagerFragmentAdapter);
-        fgt_choose_edit_view_pager.setOffscreenPageLimit(mViewPagerFragmentAdapter.getCount());
+        try {
+            fgt_choose_edit_view_pager.setAdapter(mViewPagerFragmentAdapter);
+            fgt_choose_edit_view_pager.setOffscreenPageLimit(mViewPagerFragmentAdapter.getCount());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     private View lastView;

+ 0 - 1
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtChooseFilterList.java

@@ -94,7 +94,6 @@ public class FgtChooseFilterList extends BaseFragment {
     private void initData() {
         filterList.add(new Filter("原图"));
         ColorBalanceFilter.addDefaultFilterList(filterList);
-        filterList.add(new BeautifyFilter("美化").setWidth(G.WIDTH).setHeight(G.HEIGHT));
         filterList.add(new WaveFilter("波浪").setPercent(1).setType(null));
         filterList.add(new Filter("浮雕").setConfig("#unpack @style emboss 1 2 2"));
         filterList.add(new Filter("半色调").setConfig("@style halftone 1.2"));

+ 5 - 6
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtChooseLevelList.java

@@ -51,9 +51,8 @@ public class FgtChooseLevelList extends BaseFragment {
         recyclerView.setAdapter(new BaseQuickAdapter<Integer, BaseViewHolder>(R.layout.item_level, list) {
             @Override
             protected void convert(BaseViewHolder helper, final Integer item) {
-                final int position = item - 1;
                 CheckedTextView item_level_ctv = helper.getView(R.id.item_level_ctv);
-                switch (position) {
+                switch (item) {
                     case 0:
                         LayoutParamsUtil.resetLayoutParams(item_level_ctv, new Lp(per).setLeftMargin(ps).setRightMargin(p));
                         break;
@@ -64,12 +63,12 @@ public class FgtChooseLevelList extends BaseFragment {
                         LayoutParamsUtil.resetLayoutParams(item_level_ctv, new Lp(per).setRightMargin(ps));
                         break;
                 }
-                item_level_ctv.setChecked(position == selectPosition);
-                ViewUtil.setText(item_level_ctv, String.valueOf(position));
+                item_level_ctv.setChecked(item == selectPosition);
+                ViewUtil.setText(item_level_ctv, String.valueOf(item));
                 helper.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        selectPosition = position;
+                        selectPosition = item;
                         ViewUtil.notifyDataSetChanged(recyclerView);
                         if (getActivity() instanceof Levelble) {
                             ((Levelble) getActivity()).setLevel(item);
@@ -89,7 +88,7 @@ public class FgtChooseLevelList extends BaseFragment {
 
     private void initData() {
         for (int i = 0; i < count; i++) {
-            list.add(i + 1);
+            list.add(i);
         }
         ViewUtil.notifyDataSetChanged(recyclerView);
         per = (G.WIDTH - count * G.DENSITY * 40) / (ps * 2 + (count - 1) * p);

media/app/src/main/res/layout/fgt_choose_edit_list.xml → media/app/src/main/res/layout/media_fgt_choose_edit_list.xml