Browse Source

简单涂鸦完成

zengjiebin 7 years ago
parent
commit
5ed9516e51

+ 2 - 2
gradle.properties

@@ -17,8 +17,8 @@
 # org.gradle.parallel=true
 #android.injected.build.model.only.versioned = 3
 
-VERSION_NAME=3.4.5
-VERSION_CODE=3004005
+VERSION_NAME=3.4.6
+VERSION_CODE=3004006
 ANDROID_COMPILE_SDK_VERSION=28
 ANDROID_BUILD_TOOLS_VERSION=28.0.3
 ANDROID_MIN_SDK_VERSION=18

+ 88 - 1
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtColorList.java

@@ -1,8 +1,24 @@
 package com.kfzs.cfyl.media.fragment;
 
 
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+
+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.util.ListUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import rx.functions.Action1;
 
 /**
  * Created by realicing on 2018/12/20.
@@ -11,10 +27,81 @@ import com.kfzs.cfyl.media.R;
 public class FgtColorList extends BaseFragment {
     @Override
     public int getLayoutId() {
-        return R.layout.media_common_rv;
+        return R.layout.media_fgt_color_list;
     }
 
+    private RecyclerView media_recyclerView;
+    private List<Integer> list = new ArrayList<>();
+    private List<Integer> colorList = new ArrayList<>();
+    private int curPosition;
     @Override
     public void onViewCreated() {
+        tryInitList();
+        media_recyclerView = findViewById(R.id.media_recyclerView);
+        media_recyclerView.setLayoutManager(new GridLayoutManager(media_recyclerView.getContext(), list.size()));
+        final BaseQuickAdapter<Integer, BaseViewHolder> baseQuickAdapter = new BaseQuickAdapter<Integer, BaseViewHolder>(R.layout.media_item_color, list) {
+
+            @Override
+            protected void convert(BaseViewHolder helper, Integer item) {
+                int position = helper.getAdapterPosition();
+                if(position == curPosition) {
+                    helper.setBackgroundRes(R.id.media_item_color_out_iv, R.drawable.media_shape_ring_white);
+                } else {
+                    helper.setBackgroundColor(R.id.media_item_color_out_iv, Color.TRANSPARENT);
+                }
+                helper.setBackgroundRes(R.id.media_item_color_in_iv, item);
+            }
+        };
+        baseQuickAdapter.bindToRecyclerView(media_recyclerView);
+        baseQuickAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+               selectPosition(position);
+                int lastPosition = curPosition;
+                curPosition = position;
+                if(lastPosition != curPosition){
+                    baseQuickAdapter.notifyDataSetChanged();
+                }
+            }
+        });
+
+    }
+
+    private void selectPosition(int position) {
+        Integer item = ListUtil.getItem(colorList, position);
+        if(item != null){
+            if(selectColorAction1 != null){
+                selectColorAction1.call(item);
+            }
+        }
+    }
+
+    private Action1<Integer> selectColorAction1;
+    public FgtColorList loadData(Action1<Integer> selectColorAction1){
+        this.selectColorAction1 = selectColorAction1;
+        tryInitList();
+        selectPosition(curPosition);
+        return this;
+    }
+
+    private void tryInitList() {
+        if(list.isEmpty()){
+            list.add(R.drawable.media_shape_oval_white);
+            list.add(R.drawable.media_shape_oval_black);
+            list.add(R.drawable.media_shape_oval_red_ff1d11);
+            list.add(R.drawable.media_shape_oval_fbf606);
+            list.add(R.drawable.media_shape_oval_14e213);
+            list.add(R.drawable.media_shape_oval_1b9bff);
+            list.add(R.drawable.media_shape_oval_8c05ff);
+        }
+        if(colorList.isEmpty()){
+            colorList.add(Color.WHITE);
+            colorList.add(Color.BLACK);
+            colorList.add(Color.parseColor("#ff1d11"));
+            colorList.add(Color.parseColor("#fbf606"));
+            colorList.add(Color.parseColor("#14e213"));
+            colorList.add(Color.parseColor("#1b9bff"));
+            colorList.add(Color.parseColor("#8c05ff"));
+        }
     }
 }

+ 15 - 1
media/app/src/main/java/com/kfzs/cfyl/media/fragment/FgtDoodle.java

@@ -37,6 +37,7 @@ import cn.hzw.doodle.core.IDoodle;
 import cn.hzw.doodle.core.IDoodlePen;
 import cn.hzw.doodle.core.IDoodleSelectableItem;
 import cn.hzw.doodle.core.IDoodleTouchDetector;
+import rx.functions.Action1;
 
 /**
  * Created by realicing on 2018/12/20.
@@ -55,7 +56,12 @@ public class FgtDoodle extends BaseFragment {
         media_viewPager = findViewById(R.id.media_viewPager);
 
         List<Fragment> fragmentList = new ArrayList<>();
-        fragmentList.add(new FgtColorList());
+        fragmentList.add(new FgtColorList().loadData(new Action1<Integer>() {
+            @Override
+            public void call(Integer color) {
+                selectColor(color);
+            }
+        }));
         ViewPagerFragmentAdapter mViewPagerFragmentAdapter = new ViewPagerFragmentAdapter(getChildFragmentManager(), fragmentList);
         media_viewPager.setAdapter(mViewPagerFragmentAdapter);
         media_viewPager.setOffscreenPageLimit(mViewPagerFragmentAdapter.getCount());
@@ -103,6 +109,14 @@ public class FgtDoodle extends BaseFragment {
     }
 
 
+    private void selectColor(Integer color) {
+        if(mDoodleView != null){
+            if(mDoodleView.getColor() instanceof DoodleColor){
+                ((DoodleColor) mDoodleView.getColor()).setColor(color);
+            }
+        }
+    }
+
     private void initDoodleView(ViewGroup media_fgt_doodle_container) {
         // 涂鸦参数
         mDoodleParams = new DoodleParams();

+ 21 - 0
media/app/src/main/java/com/kfzs/cfyl/media/util/ViewUtil.java

@@ -1,5 +1,6 @@
 package com.kfzs.cfyl.media.util;
 
+import android.graphics.drawable.GradientDrawable;
 import android.support.annotation.StringRes;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -109,4 +110,24 @@ public class ViewUtil {
         if (recyclerView != null && recyclerView.getAdapter() != null)
             recyclerView.getAdapter().notifyDataSetChanged();
     }
+
+    public static void setShapeStrokeColor(ImageView imageView, int width, int color) {
+        if(imageView != null){
+            if(imageView.getDrawable() instanceof GradientDrawable){
+                GradientDrawable gradientDrawable = ((GradientDrawable) imageView.getDrawable());
+                gradientDrawable.setStroke(width, color);
+                imageView.setImageDrawable(gradientDrawable);
+            }
+        }
+    }
+
+    public static void setShapeSolidColor(ImageView imageView, int color) {
+        if(imageView != null){
+            if(imageView.getDrawable() instanceof GradientDrawable){
+                GradientDrawable gradientDrawable = ((GradientDrawable) imageView.getDrawable());
+                gradientDrawable.setColor(color);
+                imageView.setImageDrawable(gradientDrawable);
+            }
+        }
+    }
 }

+ 7 - 0
media/app/src/main/res/drawable/media_shape_oval_14e213.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="20dp" />
+
+    <solid android:color="#14e213" />
+</shape>

+ 7 - 0
media/app/src/main/res/drawable/media_shape_oval_1b9bff.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="20dp" />
+
+    <solid android:color="#1b9bff" />
+</shape>

+ 7 - 0
media/app/src/main/res/drawable/media_shape_oval_8c05ff.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="20dp" />
+
+    <solid android:color="#8c05ff" />
+</shape>

+ 1 - 1
media/app/src/main/res/drawable/media_shape_oval_black.xml

@@ -3,5 +3,5 @@
     android:shape="rectangle">
     <corners android:radius="20dp" />
 
-    <solid android:color="@color/media_black" />
+    <solid android:color="#000000" />
 </shape>

+ 7 - 0
media/app/src/main/res/drawable/media_shape_oval_fbf606.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="20dp" />
+
+    <solid android:color="#fbf606" />
+</shape>

+ 7 - 0
media/app/src/main/res/drawable/media_shape_oval_red_ff1d11.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="20dp" />
+
+    <solid android:color="#ff1d11" />
+</shape>

+ 9 - 0
media/app/src/main/res/drawable/media_shape_ring_tra.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <corners android:radius="20dp" />
+
+    <stroke
+        android:width="2dp"
+        android:color="#00000000" />
+</shape>

+ 9 - 0
media/app/src/main/res/drawable/media_shape_ring_white.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <corners android:radius="20dp" />
+
+    <stroke
+        android:width="2dp"
+        android:color="@color/media_white" />
+</shape>

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

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

+ 12 - 37
media/app/src/main/res/layout/media_fgt_color_list.xml

@@ -1,39 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center"
-    android:orientation="horizontal">
-
-    <View
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="2" />
-
-    <ImageView
-        android:layout_width="18dp"
-        android:layout_height="18dp"
-        android:background="@drawable/media_shape_oval_white"/>
-
-    <View
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1" />
-    <ImageView
-        android:layout_width="18dp"
-        android:layout_height="18dp"
-        android:background="@drawable/media_shape_oval_black"/>
-    <View
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1" />
-    <ImageView
-        android:layout_width="18dp"
-        android:layout_height="18dp"
-        android:background="@drawable/media_shape_oval_red"/>
-
-    <View
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="2" />
-</LinearLayout>
+    android:layout_height="match_parent">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/media_recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingStart="20dp"
+        android:paddingEnd="20dp"
+        android:layout_centerInParent="true"
+        android:descendantFocusability="blocksDescendants" />
+</RelativeLayout>

+ 19 - 0
media/app/src/main/res/layout/media_item_color.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <View
+        android:id="@+id/media_item_color_out_iv"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:layout_centerInParent="true"
+        android:background="@drawable/media_shape_ring_white" />
+
+    <View
+        android:id="@+id/media_item_color_in_iv"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
+        android:layout_centerInParent="true"
+        android:background="@drawable/media_shape_oval_red" />
+</RelativeLayout>