zengjiebin 7 роки тому
батько
коміт
39e95f65a4
21 змінених файлів з 1158 додано та 233 видалено
  1. 192 0
      media/app/src/main/java/com/kfzs/cfyl/media/BaseListFgtActivity.java
  2. 204 0
      media/app/src/main/java/com/kfzs/cfyl/media/BaseListFgtFgt.java
  3. 57 152
      media/app/src/main/java/com/kfzs/cfyl/media/activity/ActCutVideo.java
  4. 11 0
      media/app/src/main/java/com/kfzs/cfyl/media/api/FgtCreater.java
  5. 62 0
      media/app/src/main/java/com/kfzs/cfyl/media/bean/EditVideoType.java
  6. 50 5
      media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtDiscoveryTopic.java
  7. 63 0
      media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtDoodle.java
  8. 129 0
      media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtEditVideoTypeList.java
  9. 174 0
      media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtVideoFrameList.java
  10. 1 75
      media/app/src/main/res/layout/media_act_cut_video.xml
  11. 1 1
      media/app/src/main/res/layout/media_common_rv.xml
  12. 53 0
      media/app/src/main/res/layout/media_fgt_cut_video.xml
  13. 36 0
      media/app/src/main/res/layout/media_fgt_doodle.xml
  14. 59 0
      media/app/src/main/res/layout/media_fgt_dt.xml
  15. 41 0
      media/app/src/main/res/layout/media_fgt_edit_video_type_list.xml
  16. 25 0
      media/app/src/main/res/layout/media_item_iv_tv.xml
  17. BIN
      media/app/src/main/res/mipmap-xxhdpi/media_ic_cover.png
  18. BIN
      media/app/src/main/res/mipmap-xxhdpi/media_ic_doodle.png
  19. BIN
      media/app/src/main/res/mipmap-xxhdpi/media_ic_music.png
  20. BIN
      media/app/src/main/res/mipmap-xxhdpi/media_ic_sticker.png
  21. BIN
      media/app/src/main/res/mipmap-xxhdpi/media_ic_text.png

+ 192 - 0
media/app/src/main/java/com/kfzs/cfyl/media/BaseListFgtActivity.java

@@ -0,0 +1,192 @@
+package com.kfzs.cfyl.media;
+
+import android.content.Intent;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
+
+import com.kfzs.cfyl.media.api.FgtCreater;
+import com.kfzs.cfyl.media.util.ListUtil;
+
+import java.util.List;
+
+
+/**
+ * Created by realicing on 2018/11/2.
+ * realicing@sina.com
+ */
+public abstract class BaseListFgtActivity extends BaseActivity {
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.media_common_container;
+    }
+
+    @Override
+    public void initView() {
+        parseIntent(getIntent());
+        initFragments();
+    }
+
+    //解析intent数据
+    protected void parseIntent(Intent intent){
+
+    }
+
+    //获取子fgt列表的创建器列表
+    protected abstract List<FgtCreater> getFgtCreaterList();
+
+    //fgt列表总个数
+    protected int fgtCount;
+
+    public int getFgtCount() {
+        return fgtCount;
+    }
+
+    //初始化并加载fgt列表
+    protected void initFragments() {
+        List<FgtCreater> fgtCreaterList = getFgtCreaterList();
+        fgtCount = fgtCreaterList.size();
+        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+        int index = 0;
+        for (FgtCreater item : fgtCreaterList) {
+            Fragment fragment = getSupportFragmentManager().findFragmentByTag(getFgtTagByPosition(index));
+            if (fragment == null) {
+                fragment = item.newInstance();
+                onInitFragment(fragment, index);
+            }
+            transaction.add(R.id.media_frame_container, fragment, getFgtTagByPosition(index));
+            if (index == 0) {
+                onBeforeShowFragment(fragment, index);
+                transaction.show(fragment);
+                onShowFragment(fragment, index);
+            } else {
+                onBeforeHideFragment(fragment, index);
+                transaction.hide(fragment);
+                onHideFragment(fragment, index);
+            }
+            if(fragment instanceof BaseListFgtFgt){
+                ((BaseListFgtFgt) fragment).initFragments(getSupportFragmentManager(), getFgtTagByPosition(index), index);
+            }
+            index++;
+        }
+        transaction.commitAllowingStateLoss();
+    }
+
+    //最后选中的位置
+    private int lastPosition;
+
+    public int getLastPosition() {
+        return lastPosition;
+    }
+
+    //判断是否可以切换到上一个fgt
+    public boolean canSwitchLastFgt(){
+        return lastPosition > 0;
+    }
+    //切换到上一个fgt
+    public boolean switchLastFgt(){
+        if(canSwitchLastFgt()){
+            switchFgt(lastPosition - 1);
+            return true;
+        }
+        return false;
+    }
+    //判断是否可以切换到下一个fgt
+    public boolean canSwitchNextFgt(){
+        return lastPosition + 1 < fgtCount;
+    }
+    //切换到下一个fgt
+    public boolean switchNextFgt(){
+        if(canSwitchNextFgt()){
+            switchFgt(lastPosition + 1);
+            return true;
+        }
+        return false;
+    }
+    //切换fgt
+    public void switchFgt(int position) {
+        if (lastPosition != position) {
+            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+            Fragment cFragment = getFgtByPosition(position);
+            Fragment lFragment = getFgtByPosition(lastPosition);
+            if (lFragment != null) {
+                onBeforeHideFragment(lFragment, position);
+                transaction.hide(lFragment);
+                onHideFragment(lFragment, position);
+            }
+            if (cFragment != null) {
+                onBeforeShowFragment(cFragment, lastPosition);
+                transaction.show(cFragment);
+                onShowFragment(cFragment, lastPosition);
+            }
+            transaction.commitAllowingStateLoss();
+            if (lFragment != null)
+                lFragment.setUserVisibleHint(false);
+            if (cFragment != null)
+                cFragment.setUserVisibleHint(true);
+        }
+        lastPosition = position;
+    }
+
+    /**
+     * 切换fgt
+     * @param position 要显示的position
+     * @param lFragment 要隐藏的fgt
+     */
+    public void switchFgt(int position, Fragment lFragment) {
+        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+        Fragment cFragment = getFgtByPosition(position);
+        if (lFragment != null) {
+            int lPosition = -1;
+            if(cFragment instanceof BaseListFgtFgt){
+                lPosition = ((BaseListFgtFgt) cFragment).getLastPosition();
+            }
+            onBeforeHideFragment(lFragment, lPosition);
+            transaction.hide(lFragment);
+            onHideFragment(lFragment, lPosition);
+        }
+        if (cFragment != null) {
+            onBeforeShowFragment(cFragment, position);
+            transaction.show(cFragment);
+            onShowFragment(cFragment, position);
+        }
+        transaction.commitAllowingStateLoss();
+        if (lFragment != null)
+            lFragment.setUserVisibleHint(false);
+        if (cFragment != null)
+            cFragment.setUserVisibleHint(true);
+        lastPosition = position;
+    }
+
+    public Fragment getFgtByPosition(int position) {
+        return getSupportFragmentManager().findFragmentByTag(getFgtTagByPosition(position));
+    }
+
+    //根据位置获取fgt的tag
+    public String getFgtTagByPosition(int position) {
+        return "fragment_" + position;
+    }
+
+    //初始化fragment时
+    protected void onInitFragment(Fragment fragment, int position) {
+
+    }
+    //显示fgt前
+    protected void onBeforeShowFragment(Fragment fragment, int position) {
+
+    }
+    //显示fgt后
+    protected void onShowFragment(Fragment fragment, int position) {
+        if(fragment instanceof BaseListFgtFgt){
+            ((BaseListFgtFgt) fragment).setLastPosition(-1);
+        }
+    }
+    //隐藏fgt前
+    protected void onBeforeHideFragment(Fragment fragment, int position) {
+
+    }
+    //隐藏fgt后
+    protected void onHideFragment(Fragment fragment, int position) {
+
+    }
+}

+ 204 - 0
media/app/src/main/java/com/kfzs/cfyl/media/BaseListFgtFgt.java

@@ -0,0 +1,204 @@
+package com.kfzs.cfyl.media;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+
+import com.kfzs.cfyl.media.api.FgtCreater;
+
+import java.util.List;
+
+
+/**
+ * Created by realicing on 2018/11/2.
+ * realicing@sina.com
+ * 需要调用initFragments方法初始化
+ */
+public abstract class BaseListFgtFgt extends BaseFragment {
+
+    //获取子fgt列表的创建器列表
+    protected abstract List<FgtCreater> getFgtCreaterList();
+
+    //fgt列表总个数
+    protected int fgtCount;
+
+    public int getFgtCount() {
+        return fgtCount;
+    }
+
+    private String curTag;
+    private int backFgtPosition;
+    //初始化并加载fgt列表
+    public void initFragments(FragmentManager fragmentManager, String backTag, int backFgtPosition) {
+        this.curTag = backTag;
+        this.backFgtPosition = backFgtPosition;
+        List<FgtCreater> fgtCreaterList = getFgtCreaterList();
+        fgtCount = fgtCreaterList.size();
+        if (fragmentManager != null) {
+            FragmentTransaction transaction = fragmentManager.beginTransaction();
+            int index = 0;
+            for (FgtCreater item : fgtCreaterList) {
+                String tag = getFgtTagByPosition(index);
+                Fragment fragment = fragmentManager.findFragmentByTag(tag);
+                if (fragment == null) {
+                    fragment = item.newInstance();
+                    onInitFragment(fragment, index);
+                }
+                transaction.add(R.id.media_frame_container, fragment, tag);
+                if (index == 0) {
+                    onBeforeShowFragment(fragment, index);
+                    transaction.show(fragment);
+                    onShowFragment(fragment, index);
+                } else {
+                    onBeforeHideFragment(fragment, index);
+                    transaction.hide(fragment);
+                    onHideFragment(fragment, index);
+                }
+                index++;
+            }
+            transaction.commitAllowingStateLoss();
+        }
+    }
+
+    private FragmentManager getSupportFragmentManager() {
+        if (getActivity() != null) {
+            return getActivity().getSupportFragmentManager();
+        }
+        return null;
+    }
+
+    //最后选中的位置
+    private int lastPosition = -1;
+
+    public void setLastPosition(int lastPosition) {
+        this.lastPosition = lastPosition;
+    }
+
+    public int getLastPosition() {
+        return lastPosition;
+    }
+
+    //判断是否可以切换到上一个fgt
+    public boolean canSwitchLastFgt() {
+        return lastPosition > 0;
+    }
+
+    //切换到上一个fgt
+    public boolean switchLastFgt() {
+        if (canSwitchLastFgt()) {
+            switchFgt(lastPosition - 1);
+            return true;
+        }
+        return false;
+    }
+
+    //判断是否可以切换到下一个fgt
+    public boolean canSwitchNextFgt() {
+        return lastPosition + 1 < fgtCount;
+    }
+
+    //切换到下一个fgt
+    public boolean switchNextFgt() {
+        if (canSwitchNextFgt()) {
+            switchFgt(lastPosition + 1);
+            return true;
+        }
+        return false;
+    }
+
+    //返回
+    public boolean back() {
+        if(curTag != null){
+            if (getSupportFragmentManager() != null) {
+                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+                Fragment cFragment = getSupportFragmentManager().findFragmentByTag(curTag);
+                Fragment lFragment = getFgtByPosition(lastPosition);
+                if (lFragment != null) {
+                    onBeforeHideFragment(lFragment, lastPosition);
+                    transaction.hide(lFragment);
+                    onHideFragment(lFragment, lastPosition);
+                }
+                if (cFragment != null) {
+                    onBeforeShowFragment(cFragment, backFgtPosition);
+                    transaction.show(cFragment);
+                    onShowFragment(cFragment, backFgtPosition);
+                }
+                transaction.commitAllowingStateLoss();
+                if (lFragment != null)
+                    lFragment.setUserVisibleHint(false);
+                if (cFragment != null)
+                    cFragment.setUserVisibleHint(true);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    //切换fgt
+    public void switchFgt(int position) {
+        if (lastPosition != position) {
+            if (getSupportFragmentManager() != null) {
+                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+                Fragment cFragment = getFgtByPosition(position);
+                Fragment lFragment = getFgtByPosition(lastPosition);
+                if (lFragment != null) {
+                    onBeforeHideFragment(lFragment, lastPosition);
+                    transaction.hide(lFragment);
+                    onHideFragment(lFragment, lastPosition);
+                }
+                if (cFragment != null) {
+                    onBeforeShowFragment(cFragment, position);
+                    transaction.show(cFragment);
+                    onShowFragment(cFragment, position);
+                }
+                transaction.commitAllowingStateLoss();
+                if (lFragment != null)
+                    lFragment.setUserVisibleHint(false);
+                if (cFragment != null)
+                    cFragment.setUserVisibleHint(true);
+            }
+        }
+        lastPosition = position;
+    }
+
+    public Fragment getFgtByPosition(int position) {
+        if (getSupportFragmentManager() != null) {
+            if(position == -1){
+                return this;
+            }
+            String tag = getFgtTagByPosition(position);
+            return getSupportFragmentManager().findFragmentByTag(tag);
+        }
+        return null;
+    }
+
+    //根据位置获取fgt的tag
+    public String getFgtTagByPosition(int position) {
+        return getClass().getSimpleName() + "_fragment_" + position;
+    }
+
+    //初始化fragment时
+    protected void onInitFragment(Fragment fragment, int position) {
+
+    }
+
+    //显示fgt前
+    protected void onBeforeShowFragment(Fragment fragment, int position) {
+
+    }
+
+    //显示fgt后
+    protected void onShowFragment(Fragment fragment, int position) {
+
+    }
+
+    //隐藏fgt前
+    protected void onBeforeHideFragment(Fragment fragment, int position) {
+
+    }
+
+    //隐藏fgt后
+    protected void onHideFragment(Fragment fragment, int position) {
+
+    }
+}

+ 57 - 152
media/app/src/main/java/com/kfzs/cfyl/media/activity/ActCutVideo.java

@@ -5,45 +5,36 @@ import android.media.MediaPlayer;
 import android.net.Uri;
 import android.support.v4.app.Fragment;
 import android.util.Log;
-import android.view.KeyEvent;
 import android.view.View;
-import android.widget.TextView;
 
 import com.alibaba.fastjson.JSONObject;
-import com.kfzs.cfyl.media.BaseContainerActivity;
+import com.kfzs.cfyl.media.BaseListFgtActivity;
 import com.kfzs.cfyl.media.R;
+import com.kfzs.cfyl.media.api.FgtCreater;
 import com.kfzs.cfyl.media.api.IdChooser;
-import com.kfzs.cfyl.media.customview.VideoFramesView;
+import com.kfzs.cfyl.media.bean.EditVideoType;
 import com.kfzs.cfyl.media.fragment.FgtDiscoveryTopic;
+import com.kfzs.cfyl.media.fragment.FgtEditVideoTypeList;
+import com.kfzs.cfyl.media.fragment.FgtVideoFrameList;
 import com.kfzs.cfyl.media.util.G;
-import com.kfzs.cfyl.media.util.KeyEventUtil;
 import com.kfzs.cfyl.media.util.ListUtil;
-import com.kfzs.cfyl.media.util.VideoUtil;
-import com.kfzs.cfyl.media.util.ViewUtil;
-import com.kfzs.cfyl.share_library.util.LogUtil;
 import com.sheep.gamegroup.model.entity.Video;
 
 import org.wysaid.common.Common;
 import org.wysaid.view.VideoPlayerGLSurfaceView;
 
-import java.text.DecimalFormat;
 import java.util.ArrayList;
-
-import rx.functions.Action1;
+import java.util.List;
 
 /**
  * Created by realicing on 2018/11/9.
  * realicing@sina.com
  * 添加话题并剪切视频
  */
-public class ActCutVideo extends BaseContainerActivity implements IdChooser {
+public class ActCutVideo extends BaseListFgtActivity implements IdChooser {
 
     VideoPlayerGLSurfaceView mPlayerView;
-    VideoFramesView videoFramesView;
-    TextView edit_video_time_tv;
 
-    TextView edit_video_topic_tv;
-    TextView edit_video_sure_tv;
     View frame_container;
 
     @Override
@@ -51,34 +42,69 @@ public class ActCutVideo extends BaseContainerActivity implements IdChooser {
         return R.layout.media_act_cut_video;
     }
 
-
-    public static final long MAX_VIDEO_DURATION = 15_000L;//视频最大时长,超过需要剪切
     private Video data;
 
     private ArrayList<String> arrayList;//主题列表
 
+    @Override
+    protected void parseIntent(Intent intent) {
+        arrayList = intent.getStringArrayListExtra(ArrayList.class.getSimpleName());
+        data = JSONObject.parseObject(intent.getStringExtra(String.class.getSimpleName()), Video.class);
+    }
 
     @Override
-    protected Fragment initFragment() {
-        return new FgtDiscoveryTopic();
+    protected List<FgtCreater> getFgtCreaterList() {
+        List<FgtCreater> fgtCreaterList = new ArrayList<>();
+        fgtCreaterList.add(new FgtCreater() {
+            @Override
+            public Fragment newInstance() {
+                return new FgtDiscoveryTopic();
+            }
+        });
+        fgtCreaterList.add(new FgtCreater() {
+            @Override
+            public Fragment newInstance() {
+                return new FgtEditVideoTypeList();
+            }
+        });
+        fgtCreaterList.add(new FgtCreater() {
+            @Override
+            public Fragment newInstance() {
+                return new FgtVideoFrameList();
+            }
+        });
+        return fgtCreaterList;
     }
+
     @Override
     public void initView() {
         super.initView();
-
-        Intent intent = getIntent();
-        arrayList = intent.getStringArrayListExtra(ArrayList.class.getSimpleName());
-        if (arrayList != null && fragment instanceof FgtDiscoveryTopic)
-            ((FgtDiscoveryTopic) fragment).loadData(arrayList);
-        data = JSONObject.parseObject(intent.getStringExtra(String.class.getSimpleName()), Video.class);
-
         mPlayerView = findViewById(R.id.videoGLSurfaceView);
-        videoFramesView = findViewById(R.id.media_videoFramesView);
-        edit_video_time_tv = findViewById(R.id.media_edit_video_time_tv);
-        edit_video_topic_tv = findViewById(R.id.media_edit_video_topic_tv);
-        edit_video_sure_tv = findViewById(R.id.media_edit_video_sure_tv);
         frame_container = findViewById(R.id.media_frame_container);
+    }
+    @Override
+    protected void onInitFragment(Fragment fragment, int position) {
+        super.onInitFragment(fragment, position);
+        if (fragment instanceof FgtDiscoveryTopic) {
+            if(arrayList != null)
+                ((FgtDiscoveryTopic) fragment).loadData(arrayList);
+        } else if (fragment instanceof FgtVideoFrameList) {
+            if(data != null)
+                ((FgtVideoFrameList) fragment).loadData(data);
+        }
+    }
 
+    @Override
+    protected void onShowFragment(Fragment fragment, int position) {
+        super.onShowFragment(fragment, position);
+        if (fragment instanceof FgtVideoFrameList) {
+            if(data != null)
+                ((FgtVideoFrameList) fragment).tryCheckDuration();
+        }
+    }
+
+    @Override
+    public void initListener() {
         //播放视频
         mPlayerView.setZOrderOnTop(false);
         mPlayerView.setZOrderMediaOverlay(true);
@@ -107,44 +133,8 @@ public class ActCutVideo extends BaseContainerActivity implements IdChooser {
                 player.start();
             }
         }, playCompletionCallback);
-
-        //视频帧
-        videoFramesView.initVideo(data).setMaxDuration(MAX_VIDEO_DURATION).showVideoList(this).setOnTimeChangeListener(new Action1<Float>() {
-            @Override
-            public void call(Float duration) {
-                if (duration == null)
-                    return;
-                if (videoFramesView.getVisibility() == View.VISIBLE)
-                    checkDuration(duration.longValue());
-                edit_video_time_tv.setText(getString(R.string.media_has_choose_x_second, new DecimalFormat("#.#").format(duration / 1000.0f)));
-//                edit_video_time_tv.append("\t");
-//                edit_video_time_tv.append(String.valueOf(duration));
-//                edit_video_time_tv.append("\t");
-//                edit_video_time_tv.append(String.valueOf(data.getDuration()));
-//                edit_video_time_tv.append("\t");
-//                edit_video_time_tv.append(String.format(Locale.CHINA, "%.1f秒-%.1f秒", videoFramesView.getStartPoint() / 1000.0f, videoFramesView.getEndPoint() / 1000.0f));
-//                edit_video_time_tv.append("\t");
-//                edit_video_time_tv.append(videoFramesView.getLineInfo());
-            }
-        });
-        //隐藏视频剪切相关view
-        edit_video_time_tv.setVisibility(View.INVISIBLE);
-        videoFramesView.setVisibility(View.INVISIBLE);
-    }
-
-    private static final String TAG = ActCutVideo.class.getSimpleName();
-
-    //检查有没有设置剪切视频的时长
-    private void checkDuration(long duration) {
-        LogUtil.println(TAG, data.getDuration(), duration);
-        if ((data.getDuration() - duration) >= 500) {
-            edit_video_sure_tv.setText(BTN_TEXT_CUT);
-        } else {
-            edit_video_sure_tv.setText(BTN_TEXT_FINISH);
-        }
     }
 
-
     @Override
     public void onPause() {
         super.onPause();
@@ -159,13 +149,6 @@ public class ActCutVideo extends BaseContainerActivity implements IdChooser {
         mPlayerView.onResume();
     }
 
-    @Override
-    protected void onDestroy() {
-        if (videoFramesView != null)
-            videoFramesView.onDestroy();
-        super.onDestroy();
-    }
-
     private VideoPlayerGLSurfaceView.PlayCompletionCallback playCompletionCallback = new VideoPlayerGLSurfaceView.PlayCompletionCallback() {
         @Override
         public void playComplete(MediaPlayer player) {
@@ -180,89 +163,11 @@ public class ActCutVideo extends BaseContainerActivity implements IdChooser {
         }
     };
 
-    //点击话题进行切换
-    public void onClickTopic(View view) {
-        ViewUtil.toggleVisibility(frame_container);
-        ViewUtil.setText(edit_video_sure_tv, BTN_TEXT_NEXT);
-        if (ViewUtil.isVisible(frame_container)) {
-            ViewUtil.setVisibility2(edit_video_time_tv, false);
-            ViewUtil.setVisibility2(videoFramesView, false);
-        }
-    }
-
-    //点击返回
-    public void onClickBackImg(View view) {
-        KeyEventUtil.sendKeyDownUp(KeyEvent.KEYCODE_BACK);
-    }
-
-    private static final String BTN_TEXT_NEXT = "下一步";
-    private static final String BTN_TEXT_CUT = "剪切";
-    private static final String BTN_TEXT_FINISH = "完成";
-
-    //点击确定
-    public void onClickSure(View view) {
-        String btnText = ((TextView) view).getText().toString();
-        switch (btnText) {
-            case BTN_TEXT_NEXT:
-                showCut();
-                break;
-            case BTN_TEXT_CUT:
-                tryCut();
-                break;
-            case BTN_TEXT_FINISH:
-                finishCut();
-                break;
-        }
-    }
-
-    private void finishCut() {//完成剪切并返回数据
-        Intent intent = new Intent();
-        intent.putExtra(Video.class.getSimpleName(), data);
-        setResult(RESULT_OK, intent);
-        finish();
-    }
-
-    private void tryCut() {//其次完成编辑
-        showProgress().getTextView().setText("剪切视频中");
-        VideoUtil.tryCutVideo(data.getFilePath(), videoFramesView.getStartPoint() * 1000, videoFramesView.getLineDuration() * 1000, new Action1<Object>() {
-            @Override
-            public void call(final Object result) {
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (result instanceof Video) {
-                            Video video = (Video) result;
-                            data.setFilePath(video.getFilePath());
-                            data.setWidth(video.getWidth());
-                            data.setHeight(video.getHeight());
-                            data.setDuration(video.getDuration());
-                            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + video.getFilePath())));
-                            hideProgress();
-                            G.showToast(getApplicationContext(), "剪切完成");
-                            finishCut();
-                        } else if (result instanceof Throwable) {
-                            hideProgress();
-                            G.showToast(getApplicationContext(), ((Throwable) result).getMessage());
-                        }
-                    }
-                });
-            }
-        });
-    }
-
-    private void showCut() {//首先隐藏话题列表
-        ViewUtil.setVisibility(frame_container, false);
-        ViewUtil.setVisibility2(edit_video_time_tv, true);
-        ViewUtil.setVisibility2(videoFramesView, true);
-        checkDuration(videoFramesView.getLineDuration());
-    }
-
     @Override
     public void onSelectId(int id) {
         String item = ListUtil.getItem(arrayList, id);
         if (item != null) {
             data.setTopicIndex(id);
-            ViewUtil.setText(edit_video_topic_tv, "#%s#", item);
         }
     }
 }

+ 11 - 0
media/app/src/main/java/com/kfzs/cfyl/media/api/FgtCreater.java

@@ -0,0 +1,11 @@
+package com.kfzs.cfyl.media.api;
+
+import android.support.v4.app.Fragment;
+
+/**
+ * Created by realicing on 2018/12/19.
+ * realicing@sina.com
+ */
+public interface FgtCreater {
+    Fragment newInstance();
+}

+ 62 - 0
media/app/src/main/java/com/kfzs/cfyl/media/bean/EditVideoType.java

@@ -0,0 +1,62 @@
+package com.kfzs.cfyl.media.bean;
+
+import android.support.v4.app.Fragment;
+
+import com.kfzs.cfyl.media.R;
+import com.kfzs.cfyl.media.api.FgtCreater;
+import com.kfzs.cfyl.media.fragment.FgtDoodle;
+
+/**
+ * Created by realicing on 2018/12/20.
+ * realicing@sina.com
+ */
+public enum EditVideoType implements FgtCreater {
+    Doodle("涂鸦", R.mipmap.media_ic_doodle){
+        @Override
+        public Fragment newInstance() {
+            return new FgtDoodle();
+        }
+
+        @Override
+        public boolean isDeveloping() {
+            return false;
+        }
+    },
+    Sticker("贴纸", R.mipmap.media_ic_sticker),
+    Text("文字", R.mipmap.media_ic_text),
+    Cover("封面", R.mipmap.media_ic_cover),
+    Music("音乐", R.mipmap.media_ic_music),
+    ;
+    private String title;
+    private int drawableId;
+
+    EditVideoType(String title, int drawableId) {
+        this.title = title;
+        this.drawableId = drawableId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getDrawableId() {
+        return drawableId;
+    }
+
+    public void setDrawableId(int drawableId) {
+        this.drawableId = drawableId;
+    }
+
+    //该功能是否处于开发中
+    public boolean isDeveloping() {
+        return true;
+    }
+    @Override
+    public Fragment newInstance() {
+        return null;
+    }
+}

+ 50 - 5
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtDiscoveryTopic.java

@@ -1,15 +1,23 @@
 package com.kfzs.cfyl.media.fragment;
 
+import android.app.Activity;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.view.KeyEvent;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 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.BaseListFgtActivity;
 import com.kfzs.cfyl.media.R;
 import com.kfzs.cfyl.media.api.IdChooser;
 import com.kfzs.cfyl.media.util.G;
+import com.kfzs.cfyl.media.util.KeyEventUtil;
+import com.kfzs.cfyl.media.util.ListUtil;
+import com.kfzs.cfyl.media.util.ViewUtil;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -22,13 +30,31 @@ public class FgtDiscoveryTopic extends BaseFragment {
 
     @Override
     public int getLayoutId() {
-        return R.layout.media_common_rv;
+        return R.layout.media_fgt_dt;
     }
 
     private RecyclerView recyclerView;
+    private TextView edit_video_topic_tv;
     @Override
     public void onViewCreated() {
-        recyclerView = findViewById(R.id.recyclerView);
+        recyclerView = findViewById(R.id.media_recyclerView);
+        edit_video_topic_tv = findViewById(R.id.media_edit_video_topic_tv);
+
+        ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
+        media_video_back_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickBackImg(view);
+            }
+        });
+
+        TextView edit_video_sure_tv = findViewById(R.id.media_edit_video_sure_tv);
+        edit_video_sure_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickNext(view);
+            }
+        });
         if(list != null){
             if(recyclerView == null){
                 G.showToast(getContext(), "初始化失败");
@@ -37,21 +63,40 @@ public class FgtDiscoveryTopic extends BaseFragment {
             initView();
         }
     }
-
+    //点击返回
+    public void onClickBackImg(View view) {
+        Activity activity = getActivity();
+        if(activity instanceof BaseListFgtActivity){
+            if(((BaseListFgtActivity) activity).switchLastFgt()){
+                return;
+            }
+        }
+        KeyEventUtil.sendKeyDownUp(KeyEvent.KEYCODE_BACK);
+    }
+    //点击下一步
+    public void onClickNext(View view) {
+        Activity activity = getActivity();
+        if(activity instanceof BaseListFgtActivity){
+            ((BaseListFgtActivity) activity).switchNextFgt();
+        }
+    }
     public void loadData(ArrayList<String> arrayList) {
         list = arrayList;
         if(recyclerView != null)
             initView();
     }
-    private BaseQuickAdapter<String, BaseViewHolder> baseQuickAdapter;
     private void initView(){
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-        baseQuickAdapter = getAdapter();
+        BaseQuickAdapter<String, BaseViewHolder> baseQuickAdapter = getAdapter();
         baseQuickAdapter.bindToRecyclerView(recyclerView);
         baseQuickAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
             @Override
             public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                 if(getActivity() instanceof IdChooser){
+                    String item = ListUtil.getItem(list, position);
+                    if (item != null) {
+                        ViewUtil.setText(edit_video_topic_tv, "#%s#", item);
+                    }
                     ((IdChooser) getActivity()).onSelectId(position);
                 }
             }

+ 63 - 0
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtDoodle.java

@@ -0,0 +1,63 @@
+package com.kfzs.cfyl.media.fragment;
+
+import android.app.Activity;
+import android.support.v4.app.Fragment;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.kfzs.cfyl.media.BaseFragment;
+import com.kfzs.cfyl.media.BaseListFgtActivity;
+import com.kfzs.cfyl.media.BaseListFgtFgt;
+import com.kfzs.cfyl.media.R;
+
+/**
+ * Created by realicing on 2018/12/20.
+ * realicing@sina.com
+ * 涂鸦功能
+ */
+public class FgtDoodle extends BaseFragment {
+    @Override
+    public int getLayoutId() {
+        return R.layout.media_fgt_doodle;
+    }
+
+    @Override
+    public void onViewCreated() {
+
+        ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
+        media_video_back_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickBackImg(view);
+            }
+        });
+
+        View media_edit_video_sure_iv = findViewById(R.id.media_edit_video_sure_iv);
+        media_edit_video_sure_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickNext(view);
+            }
+        });
+    }
+    //点击返回
+    public void onClickBackImg(View view) {
+        Activity activity = getActivity();
+        if(activity instanceof BaseListFgtActivity){
+            Fragment fragment = ((BaseListFgtActivity) activity).getFgtByPosition(FgtEditVideoTypeList.POSITION);
+            if(fragment instanceof BaseListFgtFgt){
+                if(((BaseListFgtFgt) fragment).switchLastFgt()){
+                    return;
+                }
+            }
+            onClickNext(view);
+        }
+    }
+    //点击下一步
+    public void onClickNext(View view) {
+        Activity activity = getActivity();
+        if(activity instanceof BaseListFgtActivity){
+            ((BaseListFgtActivity) activity).switchFgt(FgtEditVideoTypeList.POSITION, this);
+        }
+    }
+}

+ 129 - 0
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtEditVideoTypeList.java

@@ -0,0 +1,129 @@
+package com.kfzs.cfyl.media.fragment;
+
+import android.app.Activity;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.kfzs.cfyl.media.BaseListFgtActivity;
+import com.kfzs.cfyl.media.BaseListFgtFgt;
+import com.kfzs.cfyl.media.R;
+import com.kfzs.cfyl.media.api.FgtCreater;
+import com.kfzs.cfyl.media.bean.EditVideoType;
+import com.kfzs.cfyl.media.util.G;
+import com.kfzs.cfyl.media.util.KeyEventUtil;
+import com.kfzs.cfyl.media.util.ListUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by realicing on 2018/12/6.
+ * realicing@sina.com
+ * 涂鸦、贴纸、文字、封面、音乐
+ */
+public class FgtEditVideoTypeList extends BaseListFgtFgt {
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.media_fgt_edit_video_type_list;
+    }
+
+    public static final int POSITION = 1;
+    private RecyclerView recyclerView;
+
+    @Override
+    public void onViewCreated() {
+        recyclerView = findViewById(R.id.media_recyclerView);
+
+        ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
+        media_video_back_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickBackImg(view);
+            }
+        });
+
+        TextView edit_video_sure_tv = findViewById(R.id.media_edit_video_sure_tv);
+        edit_video_sure_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickNext(view);
+            }
+        });
+        if (list != null) {
+            if (recyclerView == null) {
+                G.showToast(getContext(), "初始化失败");
+                return;
+            }
+            initView();
+        }
+    }
+
+    private void initView() {
+        recyclerView.setLayoutManager(new GridLayoutManager(getContext(), list.size()));
+        BaseQuickAdapter<EditVideoType, BaseViewHolder> baseQuickAdapter = getAdapter();
+        baseQuickAdapter.bindToRecyclerView(recyclerView);
+        baseQuickAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(BaseQuickAdapter adapter, View view, int index) {
+                if (getActivity() instanceof BaseListFgtActivity) {
+                    EditVideoType item = ListUtil.getItem(list, index);
+                    if (item != null) {
+                        if (item.isDeveloping()) {
+                            G.showToast(getActivity(), R.string.media_coming_soon);
+                            return;
+                        }
+                        switchFgt(index);
+                    }
+                }
+            }
+        });
+    }
+
+    private List<EditVideoType> list = ListUtil.asList(EditVideoType.values());
+
+    protected BaseQuickAdapter<EditVideoType, BaseViewHolder> getAdapter() {
+        return new BaseQuickAdapter<EditVideoType, BaseViewHolder>(R.layout.media_item_iv_tv, list) {
+            @Override
+            protected void convert(BaseViewHolder helper, EditVideoType item) {
+                helper.setText(R.id.media_item_tv, item.getTitle());
+                helper.setImageResource(R.id.media_item_iv, item.getDrawableId());
+            }
+        };
+    }
+
+    //点击返回
+    public void onClickBackImg(View view) {
+        Activity activity = getActivity();
+        if (activity instanceof BaseListFgtActivity) {
+            if (((BaseListFgtActivity) activity).switchLastFgt()) {
+                return;
+            }
+        }
+        KeyEventUtil.sendKeyDownUp(KeyEvent.KEYCODE_BACK);
+    }
+
+    //点击下一步
+    public void onClickNext(View view) {
+        Activity activity = getActivity();
+        if (activity instanceof BaseListFgtActivity) {
+            ((BaseListFgtActivity) activity).switchNextFgt();
+        }
+    }
+
+    @Override
+    protected List<FgtCreater> getFgtCreaterList() {
+        List<FgtCreater> fgtCreaterList = new ArrayList<>();
+        for (EditVideoType type : list) {
+            if (!type.isDeveloping())
+                fgtCreaterList.add(type);
+        }
+        return fgtCreaterList;
+    }
+}

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

@@ -0,0 +1,174 @@
+package com.kfzs.cfyl.media.fragment;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.kfzs.cfyl.media.BaseActivity;
+import com.kfzs.cfyl.media.BaseFragment;
+import com.kfzs.cfyl.media.BaseListFgtActivity;
+import com.kfzs.cfyl.media.R;
+import com.kfzs.cfyl.media.customview.VideoFramesView;
+import com.kfzs.cfyl.media.util.G;
+import com.kfzs.cfyl.media.util.KeyEventUtil;
+import com.kfzs.cfyl.media.util.VideoUtil;
+import com.kfzs.cfyl.share_library.util.LogUtil;
+import com.sheep.gamegroup.model.entity.Video;
+
+import java.text.DecimalFormat;
+
+import rx.functions.Action1;
+
+/**
+ * Created by realicing on 2018/12/19.
+ * realicing@sina.com
+ * 截取视频帧
+ */
+public class FgtVideoFrameList extends BaseFragment {
+    private VideoFramesView videoFramesView;
+    private TextView edit_video_time_tv;
+    private TextView edit_video_sure_tv;
+    @Override
+    public int getLayoutId() {
+        return R.layout.media_fgt_cut_video;
+    }
+
+    @Override
+    public void onViewCreated() {
+        videoFramesView = findViewById(R.id.media_videoFramesView);
+        edit_video_time_tv = findViewById(R.id.media_edit_video_time_tv);
+        edit_video_sure_tv = findViewById(R.id.media_edit_video_sure_tv);
+
+        ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
+        media_video_back_iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickBackImg(view);
+            }
+        });
+
+        edit_video_sure_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onClickNext(view);
+            }
+        });
+        tryInitVideoData();
+    }
+
+    private void tryInitVideoData() {
+        if(data != null && videoFramesView != null && getActivity() != null){
+            initVideoData();
+        }
+    }
+    public static final long MAX_VIDEO_DURATION = 15_000L;//视频最大时长,超过需要剪切
+    private Video data;
+    public void loadData(Video video){
+        data = video;
+    }
+
+    //
+    private void initVideoData() {
+        //视频帧
+        videoFramesView.initVideo(data).setMaxDuration(MAX_VIDEO_DURATION).showVideoList(getActivity());
+    }
+    public void tryCheckDuration(){
+//        checkDuration(videoFramesView.getLineDuration());
+        videoFramesView.setOnTimeChangeListener(new Action1<Float>() {
+            @Override
+            public void call(Float duration) {
+                if (duration == null)
+                    return;
+                if (videoFramesView.getVisibility() == View.VISIBLE)
+                    checkDuration(duration.longValue());
+                edit_video_time_tv.setText(getString(R.string.media_has_choose_x_second, new DecimalFormat("#.#").format(duration / 1000.0f)));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.valueOf(duration));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.valueOf(data.getDuration()));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.format(Locale.CHINA, "%.1f秒-%.1f秒", videoFramesView.getStartPoint() / 1000.0f, videoFramesView.getEndPoint() / 1000.0f));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(videoFramesView.getLineInfo());
+            }
+        });
+    }
+    private static final String TAG = FgtVideoFrameList.class.getSimpleName();
+    //检查有没有设置剪切视频的时长
+    private void checkDuration(long duration) {
+        LogUtil.println(TAG, data.getDuration(), duration);
+        if ((data.getDuration() - duration) >= 500) {
+            edit_video_sure_tv.setText(BTN_TEXT_CUT);
+        } else {
+            edit_video_sure_tv.setText(BTN_TEXT_FINISH);
+        }
+    }
+
+    private void tryCut() {//其次完成编辑
+        Activity activity = getActivity();
+        if(activity instanceof BaseActivity) {
+            final BaseActivity baseActivity = (BaseActivity) activity;
+            baseActivity.showProgress().getTextView().setText("剪切视频中");
+            VideoUtil.tryCutVideo(data.getFilePath(), videoFramesView.getStartPoint() * 1000, videoFramesView.getLineDuration() * 1000, new Action1<Object>() {
+                @Override
+                public void call(final Object result) {
+                    baseActivity.runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            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();
+                                G.showToast(baseActivity.getApplicationContext(), "剪切完成");
+                                finishCut(baseActivity);
+                            } else if (result instanceof Throwable) {
+                                baseActivity.hideProgress();
+                                G.showToast(baseActivity.getApplicationContext(), ((Throwable) result).getMessage());
+                            }
+                        }
+                    });
+                }
+            });
+        }
+    }
+
+    //完成剪切
+    private void finishCut(BaseActivity baseActivity) {//完成剪切并返回数据
+        Intent intent = new Intent();
+        intent.putExtra(Video.class.getSimpleName(), data);
+        baseActivity.setResult(Activity.RESULT_OK, intent);
+        baseActivity.finish();
+    }
+    @Override
+    public void onDestroy() {
+        if (videoFramesView != null)
+            videoFramesView.onDestroy();
+        super.onDestroy();
+    }
+
+    private static final String BTN_TEXT_CUT = "剪切";
+    private static final String BTN_TEXT_FINISH = "完成";
+
+    //点击返回
+    public void onClickBackImg(View view) {
+        Activity activity = getActivity();
+        if(activity instanceof BaseListFgtActivity){
+            if(((BaseListFgtActivity) activity).switchLastFgt()){
+                return;
+            }
+        }
+        KeyEventUtil.sendKeyDownUp(KeyEvent.KEYCODE_BACK);
+    }
+    //点击下一步
+    public void onClickNext(View view) {
+        tryCut();
+    }
+}

+ 1 - 75
media/app/src/main/res/layout/media_act_cut_video.xml

@@ -18,85 +18,11 @@
             android:layout_height="match_parent" />
     </FrameLayout>
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="#99000000" />
-
-    <ImageView
-        android:id="@+id/media_video_back_iv"
-        android:layout_width="?attr/actionBarSize"
-        android:layout_height="?attr/actionBarSize"
-        android:layout_marginTop="20dp"
-        android:onClick="onClickBackImg"
-        android:scaleType="centerInside"
-        android:src="@drawable/media_narrow_back_white"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/media_edit_video_topic_tv"
-        android:layout_width="0dp"
-        android:layout_height="30dp"
-        android:background="@drawable/media_shape_white_20_solid_rectangle_15"
-        android:gravity="center|start"
-        android:maxLength="100"
-        android:onClick="onClickTopic"
-        android:paddingStart="18dp"
-        android:paddingEnd="18dp"
-        android:text="#添加话题#"
-        android:textColor="#FEFFFF"
-        android:textSize="13sp"
-        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
-        app:layout_constraintEnd_toStartOf="@id/media_edit_video_sure_tv"
-        app:layout_constraintStart_toEndOf="@id/media_video_back_iv"
-        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
-
-    <TextView
-        android:id="@+id/media_edit_video_sure_tv"
-        android:layout_width="75dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="31dp"
-        android:layout_marginEnd="16dp"
-        android:background="@drawable/media_selector_button_full_main"
-        android:gravity="center"
-        android:onClick="onClickSure"
-        android:paddingTop="6dp"
-        android:paddingBottom="6dp"
-        android:text="下一步"
-        android:textColor="#FEFFFF"
-        android:textSize="15sp"
-        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@id/media_edit_video_topic_tv"
-        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
-
     <FrameLayout
         android:id="@+id/media_frame_container"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_marginTop="27dp"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/media_edit_video_topic_tv" />
-
-    <com.kfzs.cfyl.media.customview.VideoFramesView
-        android:id="@+id/media_videoFramesView"
-        android:layout_width="match_parent"
-        android:layout_height="69dp"
-        android:layout_marginStart="36dp"
-        android:layout_marginEnd="36dp"
-        android:layout_marginBottom="17dp"
-        app:layout_constraintBottom_toBottomOf="parent" />
+        app:layout_constraintTop_toTopOf="parent" />
 
-    <TextView
-        android:id="@+id/media_edit_video_time_tv"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="15dp"
-        android:layout_marginBottom="100dp"
-        android:text="@string/media_has_choose_x_second"
-        android:textColor="#ffffffff"
-        android:textSize="12sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
 </android.support.constraint.ConstraintLayout>

+ 1 - 1
media/app/src/main/res/layout/media_common_rv.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/recyclerView"
+    android:id="@+id/media_recyclerView"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:descendantFocusability="blocksDescendants" />

+ 53 - 0
media/app/src/main/res/layout/media_fgt_cut_video.xml

@@ -0,0 +1,53 @@
+<?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="match_parent">
+
+    <ImageView
+        android:id="@+id/media_video_back_iv"
+        android:layout_width="?attr/actionBarSize"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_marginTop="20dp"
+        android:scaleType="centerInside"
+        android:src="@drawable/media_narrow_back_white"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+    <TextView
+        android:id="@+id/media_edit_video_sure_tv"
+        android:layout_width="75dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="31dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/media_selector_button_full_main"
+        android:gravity="center"
+        android:paddingTop="6dp"
+        android:paddingBottom="6dp"
+        android:text="下一步"
+        android:textColor="#FEFFFF"
+        android:textSize="15sp"
+        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
+    <com.kfzs.cfyl.media.customview.VideoFramesView
+        android:id="@+id/media_videoFramesView"
+        android:layout_width="match_parent"
+        android:layout_height="69dp"
+        android:layout_marginStart="36dp"
+        android:layout_marginEnd="36dp"
+        android:layout_marginBottom="17dp"
+        app:layout_constraintBottom_toBottomOf="parent" />
+
+    <TextView
+        android:id="@+id/media_edit_video_time_tv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="15dp"
+        android:layout_marginBottom="100dp"
+        android:text="@string/media_has_choose_x_second"
+        android:textColor="#ffffffff"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+</android.support.constraint.ConstraintLayout>

+ 36 - 0
media/app/src/main/res/layout/media_fgt_doodle.xml

@@ -0,0 +1,36 @@
+<?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="match_parent">
+
+    <ImageView
+        android:id="@+id/media_video_back_iv"
+        android:layout_width="?attr/actionBarSize"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_marginTop="20dp"
+        android:scaleType="centerInside"
+        android:src="@drawable/media_narrow_back_white"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/media_edit_video_sure_iv"
+        android:layout_width="30dp"
+        android:layout_height="30dp"
+        android:layout_marginTop="27dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/media_shape_oval_main"
+        android:onClick="onClickCommit"
+        android:padding="5dp"
+        android:src="@drawable/media_qiandao"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/media_recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:descendantFocusability="blocksDescendants"
+        app:layout_constraintBottom_toBottomOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 59 - 0
media/app/src/main/res/layout/media_fgt_dt.xml

@@ -0,0 +1,59 @@
+<?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="match_parent"
+    android:background="#99000000">
+
+    <TextView
+        android:id="@+id/media_edit_video_topic_tv"
+        android:layout_width="0dp"
+        android:layout_height="30dp"
+        android:background="@drawable/media_shape_white_20_solid_rectangle_15"
+        android:gravity="center|start"
+        android:maxLength="100"
+        android:paddingStart="18dp"
+        android:paddingEnd="18dp"
+        android:text="#添加话题#"
+        android:textColor="#FEFFFF"
+        android:textSize="13sp"
+        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
+        app:layout_constraintEnd_toStartOf="@id/media_edit_video_sure_tv"
+        app:layout_constraintStart_toEndOf="@id/media_video_back_iv"
+        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
+
+    <ImageView
+        android:id="@+id/media_video_back_iv"
+        android:layout_width="?attr/actionBarSize"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_marginTop="20dp"
+        android:scaleType="centerInside"
+        android:src="@drawable/media_narrow_back_white"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+    <TextView
+        android:id="@+id/media_edit_video_sure_tv"
+        android:layout_width="75dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="31dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/media_selector_button_full_main"
+        android:gravity="center"
+        android:paddingTop="6dp"
+        android:paddingBottom="6dp"
+        android:text="下一步"
+        android:textColor="#FEFFFF"
+        android:textSize="15sp"
+        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/media_edit_video_topic_tv"
+        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/media_recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="80dp"
+        android:descendantFocusability="blocksDescendants"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 41 - 0
media/app/src/main/res/layout/media_fgt_edit_video_type_list.xml

@@ -0,0 +1,41 @@
+<?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="match_parent"
+    android:background="#99000000">
+
+    <ImageView
+        android:id="@+id/media_video_back_iv"
+        android:layout_width="?attr/actionBarSize"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_marginTop="20dp"
+        android:scaleType="centerInside"
+        android:src="@drawable/media_narrow_back_white"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+    <TextView
+        android:id="@+id/media_edit_video_sure_tv"
+        android:layout_width="75dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="31dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/media_selector_button_full_main"
+        android:gravity="center"
+        android:paddingTop="6dp"
+        android:paddingBottom="6dp"
+        android:text="下一步"
+        android:textColor="#FEFFFF"
+        android:textSize="15sp"
+        app:layout_constraintBottom_toBottomOf="@id/media_video_back_iv"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@id/media_video_back_iv" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/media_recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:descendantFocusability="blocksDescendants"
+        android:background="#000000"
+        app:layout_constraintBottom_toBottomOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 25 - 0
media/app/src/main/res/layout/media_item_iv_tv.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:orientation="vertical"
+    android:paddingTop="16dp"
+    android:paddingBottom="16dp">
+
+
+    <ImageView
+        android:id="@+id/media_item_iv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+    <TextView
+        android:id="@+id/media_item_tv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="5dp"
+        android:gravity="center"
+        android:text="@string/app_name"
+        android:textColor="#B3B3B3"
+        android:textSize="13sp" />
+</LinearLayout>

BIN
media/app/src/main/res/mipmap-xxhdpi/media_ic_cover.png


BIN
media/app/src/main/res/mipmap-xxhdpi/media_ic_doodle.png


BIN
media/app/src/main/res/mipmap-xxhdpi/media_ic_music.png


BIN
media/app/src/main/res/mipmap-xxhdpi/media_ic_sticker.png


BIN
media/app/src/main/res/mipmap-xxhdpi/media_ic_text.png