|
@@ -1,14 +1,42 @@
|
|
|
package com.kfzs.cfyl.media.fragment;
|
|
package com.kfzs.cfyl.media.fragment;
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
import android.app.Activity;
|
|
|
|
|
+import android.graphics.Bitmap;
|
|
|
|
|
+import android.graphics.BitmapFactory;
|
|
|
|
|
+import android.graphics.Color;
|
|
|
import android.support.v4.app.Fragment;
|
|
import android.support.v4.app.Fragment;
|
|
|
|
|
+import android.support.v4.view.ViewPager;
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
|
|
+import android.view.ViewGroup;
|
|
|
import android.widget.ImageView;
|
|
import android.widget.ImageView;
|
|
|
|
|
|
|
|
import com.kfzs.cfyl.media.BaseFragment;
|
|
import com.kfzs.cfyl.media.BaseFragment;
|
|
|
import com.kfzs.cfyl.media.BaseListFgtActivity;
|
|
import com.kfzs.cfyl.media.BaseListFgtActivity;
|
|
|
import com.kfzs.cfyl.media.BaseListFgtFgt;
|
|
import com.kfzs.cfyl.media.BaseListFgtFgt;
|
|
|
import com.kfzs.cfyl.media.R;
|
|
import com.kfzs.cfyl.media.R;
|
|
|
|
|
+import com.kfzs.cfyl.media.adapter.ViewPagerFragmentAdapter;
|
|
|
|
|
+import com.kfzs.cfyl.media.util.G;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hzw.doodle.DoodleActivity;
|
|
|
|
|
+import cn.hzw.doodle.DoodleBitmap;
|
|
|
|
|
+import cn.hzw.doodle.DoodleColor;
|
|
|
|
|
+import cn.hzw.doodle.DoodleOnTouchGestureListener;
|
|
|
|
|
+import cn.hzw.doodle.DoodleParams;
|
|
|
|
|
+import cn.hzw.doodle.DoodlePen;
|
|
|
|
|
+import cn.hzw.doodle.DoodleShape;
|
|
|
|
|
+import cn.hzw.doodle.DoodleText;
|
|
|
|
|
+import cn.hzw.doodle.DoodleTouchDetector;
|
|
|
|
|
+import cn.hzw.doodle.DoodleView;
|
|
|
|
|
+import cn.hzw.doodle.IDoodleListener;
|
|
|
|
|
+import cn.hzw.doodle.core.IDoodle;
|
|
|
|
|
+import cn.hzw.doodle.core.IDoodlePen;
|
|
|
|
|
+import cn.hzw.doodle.core.IDoodleSelectableItem;
|
|
|
|
|
+import cn.hzw.doodle.core.IDoodleTouchDetector;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Created by realicing on 2018/12/20.
|
|
* Created by realicing on 2018/12/20.
|
|
@@ -21,8 +49,19 @@ public class FgtDoodle extends BaseFragment {
|
|
|
return R.layout.media_fgt_doodle;
|
|
return R.layout.media_fgt_doodle;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private ViewPager media_viewPager;
|
|
|
@Override
|
|
@Override
|
|
|
public void onViewCreated() {
|
|
public void onViewCreated() {
|
|
|
|
|
+ media_viewPager = findViewById(R.id.media_viewPager);
|
|
|
|
|
+
|
|
|
|
|
+ List<Fragment> fragmentList = new ArrayList<>();
|
|
|
|
|
+ fragmentList.add(new FgtColorList());
|
|
|
|
|
+ ViewPagerFragmentAdapter mViewPagerFragmentAdapter = new ViewPagerFragmentAdapter(getChildFragmentManager(), fragmentList);
|
|
|
|
|
+ media_viewPager.setAdapter(mViewPagerFragmentAdapter);
|
|
|
|
|
+ media_viewPager.setOffscreenPageLimit(mViewPagerFragmentAdapter.getCount());
|
|
|
|
|
+
|
|
|
|
|
+ ViewGroup media_fgt_doodle_container = findViewById(R.id.media_fgt_doodle_container);
|
|
|
|
|
+ initDoodleView(media_fgt_doodle_container);
|
|
|
|
|
|
|
|
ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
|
|
ImageView media_video_back_iv = findViewById(R.id.media_video_back_iv);
|
|
|
media_video_back_iv.setOnClickListener(new View.OnClickListener() {
|
|
media_video_back_iv.setOnClickListener(new View.OnClickListener() {
|
|
@@ -40,24 +79,121 @@ public class FgtDoodle extends BaseFragment {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
//点击返回
|
|
//点击返回
|
|
|
public void onClickBackImg(View view) {
|
|
public void onClickBackImg(View view) {
|
|
|
Activity activity = getActivity();
|
|
Activity activity = getActivity();
|
|
|
- if(activity instanceof BaseListFgtActivity){
|
|
|
|
|
|
|
+ if (activity instanceof BaseListFgtActivity) {
|
|
|
Fragment fragment = ((BaseListFgtActivity) activity).getFgtByPosition(FgtEditVideoTypeList.POSITION);
|
|
Fragment fragment = ((BaseListFgtActivity) activity).getFgtByPosition(FgtEditVideoTypeList.POSITION);
|
|
|
- if(fragment instanceof BaseListFgtFgt){
|
|
|
|
|
- if(((BaseListFgtFgt) fragment).switchLastFgt()){
|
|
|
|
|
|
|
+ if (fragment instanceof BaseListFgtFgt) {
|
|
|
|
|
+ if (((BaseListFgtFgt) fragment).switchLastFgt()) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
onClickNext(view);
|
|
onClickNext(view);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
//点击下一步
|
|
//点击下一步
|
|
|
public void onClickNext(View view) {
|
|
public void onClickNext(View view) {
|
|
|
Activity activity = getActivity();
|
|
Activity activity = getActivity();
|
|
|
- if(activity instanceof BaseListFgtActivity){
|
|
|
|
|
|
|
+ if (activity instanceof BaseListFgtActivity) {
|
|
|
((BaseListFgtActivity) activity).switchFgt(FgtEditVideoTypeList.POSITION, this);
|
|
((BaseListFgtActivity) activity).switchFgt(FgtEditVideoTypeList.POSITION, this);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private void initDoodleView(ViewGroup media_fgt_doodle_container) {
|
|
|
|
|
+ // 涂鸦参数
|
|
|
|
|
+ mDoodleParams = new DoodleParams();
|
|
|
|
|
+ mDoodleParams.mIsFullScreen = true;
|
|
|
|
|
+ mDoodleParams.mIsDrawableOutside = true;
|
|
|
|
|
+ // 初始画笔大小
|
|
|
|
|
+ mDoodleParams.mPaintUnitSize = DoodleView.DEFAULT_SIZE;
|
|
|
|
|
+ final Bitmap bitmap = Bitmap.createBitmap(G.WIDTH, G.HEIGHT, Bitmap.Config.ARGB_4444);
|
|
|
|
|
+ mDoodle = mDoodleView = new DoodleView(media_fgt_doodle_container.getContext(), bitmap, new IDoodleListener() {
|
|
|
|
|
+ /*
|
|
|
|
|
+ called when save the doodled iamge.
|
|
|
|
|
+ 保存涂鸦图像时调用
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onSaved(IDoodle doodle, Bitmap bitmap, Runnable callback) {
|
|
|
|
|
+ //do something
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ called when it is ready to doodle because the view has been measured. Now, you can set size, color, pen, shape, etc.
|
|
|
|
|
+ 此时view已经测量完成,涂鸦前的准备工作已经完成,在这里可以设置大小、颜色、画笔、形状等。
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onReady(IDoodle doodle) {
|
|
|
|
|
+ float size = mDoodleParams.mPaintUnitSize > 0 ? mDoodleParams.mPaintUnitSize * mDoodle.getUnitSize() : 0;
|
|
|
|
|
+ if (size <= 0) {
|
|
|
|
|
+ size = mDoodleParams.mPaintPixelSize > 0 ? mDoodleParams.mPaintPixelSize : mDoodle.getSize();
|
|
|
|
|
+ }
|
|
|
|
|
+ // 设置初始值
|
|
|
|
|
+ mDoodle.setSize(size);
|
|
|
|
|
+ // 选择画笔
|
|
|
|
|
+ mDoodle.setPen(DoodlePen.BRUSH);
|
|
|
|
|
+ mDoodle.setShape(DoodleShape.HAND_WRITE);
|
|
|
|
|
+ if (mDoodleParams.mZoomerScale <= 0) {
|
|
|
|
|
+ findViewById(cn.hzw.doodle.R.id.btn_zoomer).setVisibility(View.GONE);
|
|
|
|
|
+ }
|
|
|
|
|
+ mDoodle.setZoomerScale(mDoodleParams.mZoomerScale);
|
|
|
|
|
+
|
|
|
|
|
+ // 每个画笔的初始值
|
|
|
|
|
+ mPenSizeMap.put(DoodlePen.BRUSH, mDoodle.getSize());
|
|
|
|
|
+ mPenSizeMap.put(DoodlePen.COPY, DoodleActivity.DEFAULT_COPY_SIZE * mDoodle.getUnitSize());
|
|
|
|
|
+ mPenSizeMap.put(DoodlePen.ERASER, mDoodle.getSize());
|
|
|
|
|
+ mPenSizeMap.put(DoodlePen.TEXT, DoodleActivity.DEFAULT_TEXT_SIZE * mDoodle.getUnitSize());
|
|
|
|
|
+ mPenSizeMap.put(DoodlePen.BITMAP, DoodleActivity.DEFAULT_BITMAP_SIZE * mDoodle.getUnitSize());
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ mTouchGestureListener = new DoodleOnTouchGestureListener(mDoodleView, new DoodleOnTouchGestureListener.ISelectionListener() {
|
|
|
|
|
+ /*
|
|
|
|
|
+ called when the item(such as text, texture) is selected/unselected.
|
|
|
|
|
+ item(如文字,贴图)被选中或取消选中时回调
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onSelectedItem(IDoodle doodle, IDoodleSelectableItem selectableItem, boolean selected) {
|
|
|
|
|
+ //do something
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ called when you click the view to create a item(such as text, texture).
|
|
|
|
|
+ 点击View中的某个点创建可选择的item(如文字,贴图)时回调
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onCreateSelectableItem(IDoodle doodle, float x, float y) {
|
|
|
|
|
+ //do something
|
|
|
|
|
+ if (mDoodle.getPen() == DoodlePen.TEXT) {
|
|
|
|
|
+ IDoodleSelectableItem item = new DoodleText(mDoodle, "hello", 20 * mDoodle.getUnitSize(), new DoodleColor(Color.RED), x, y);
|
|
|
|
|
+ mDoodle.addItem(item);
|
|
|
|
|
+ } else if (mDoodle.getPen() == DoodlePen.BITMAP) {
|
|
|
|
|
+ IDoodleSelectableItem item = new DoodleBitmap(mDoodle, bitmap, 80 * mDoodle.getUnitSize(), x, y);
|
|
|
|
|
+ mDoodle.addItem(item);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+// create touch detector, which dectects the gesture of scoll, scale, single tap, etc.
|
|
|
|
|
+// 创建手势识别器,识别滚动,缩放,点击等手势
|
|
|
|
|
+ IDoodleTouchDetector detector = new DoodleTouchDetector(media_fgt_doodle_container.getContext(), mTouchGestureListener);
|
|
|
|
|
+ mDoodleView.setDefaultTouchDetector(detector);
|
|
|
|
|
+
|
|
|
|
|
+// Setting parameters.设置参数
|
|
|
|
|
+ mDoodleView.setPen(DoodlePen.TEXT);
|
|
|
|
|
+ mDoodleView.setShape(DoodleShape.HAND_WRITE);
|
|
|
|
|
+ mDoodleView.setColor(new DoodleColor(Color.RED));
|
|
|
|
|
+ mDoodle.setIsDrawableOutside(mDoodleParams.mIsDrawableOutside);
|
|
|
|
|
+
|
|
|
|
|
+ media_fgt_doodle_container.addView(mDoodleView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private DoodleView mDoodleView;
|
|
|
|
|
+ private IDoodle mDoodle;
|
|
|
|
|
+ private DoodleParams mDoodleParams;
|
|
|
|
|
+ private Map<IDoodlePen, Float> mPenSizeMap = new HashMap<>(); //保存每个画笔对应的最新大小
|
|
|
|
|
+ private DoodleOnTouchGestureListener mTouchGestureListener;
|
|
|
}
|
|
}
|