Просмотр исходного кода

自定义生成bitmap图片成功,

FANGLH 8 лет назад
Родитель
Сommit
14b54ba68f

+ 72 - 0
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -60,6 +60,7 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import static android.view.View.DRAWING_CACHE_QUALITY_AUTO;
 import static android.view.View.DRAWING_CACHE_QUALITY_HIGH;
 import static android.view.View.DRAWING_CACHE_QUALITY_LOW;
 
@@ -821,4 +822,75 @@ public class CommonUtil {
 
         return xmlUTF8;
     }
+
+    /**
+     * 获取某视图下截图,返回其BitMap对象 ,该方案目前只能针对简单的view视图
+     *
+     * @param view
+     * @return
+     */
+    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    public static Bitmap getViewToBitmap(View view) {
+        Bitmap bitmap = null;
+        int w_r = view.getRight();
+        int w_l = view.getLeft();
+        int width = w_r- - w_l;
+
+
+        int h_b = view.getBottom();
+        int h_t = view.getTop();
+        int height = h_b - h_t;
+
+        final boolean opaque = view.getDrawingCacheBackgroundColor() != 0 || view.isOpaque();
+        Bitmap.Config quality;
+        if (!opaque) {
+            switch (view.getDrawingCacheQuality()) {
+                case DRAWING_CACHE_QUALITY_AUTO:
+                case DRAWING_CACHE_QUALITY_LOW:
+                case DRAWING_CACHE_QUALITY_HIGH:
+                default:
+                    quality = Bitmap.Config.ARGB_8888;
+                    break;
+            }
+        } else {
+        quality = Bitmap.Config.RGB_565;
+        }
+        if (width <= 0 || height <= 0) {
+            width = 960;
+            height = 960;
+        }
+        bitmap = Bitmap.createBitmap(MyApplication.getInstance().getResources().getDisplayMetrics(),
+                width, height, quality);
+        bitmap.setDensity(MyApplication.getInstance().getResources().getDisplayMetrics().densityDpi);
+        if (opaque) bitmap.setHasAlpha(false);
+        boolean clear = view.getDrawingCacheBackgroundColor() != 0;
+        Canvas canvas = new Canvas(bitmap);
+        if (clear) {
+            bitmap.eraseColor(view.getDrawingCacheBackgroundColor());
+        }
+        view.computeScroll();
+        final int restoreCount = canvas.save();
+        canvas.translate(-view.getScrollX(), -view.getScrollY());
+        view.draw(canvas);
+        canvas.restoreToCount(restoreCount);
+        canvas.setBitmap(null);
+        return bitmap;
+    }
+
+
+    /**
+     * 获取某视图下截图,返回其BitMap对象 ,该方案目前只可用
+     * @param view
+     * @return
+     */
+    public static Bitmap getViewToBitmap2(View view) {
+        view.setDrawingCacheEnabled(true);
+        view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
+                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
+        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
+        Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
+        view.setDrawingCacheEnabled(false);
+
+        return bitmap;
+    }
 }

+ 6 - 54
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/PersonalPageActivity.java

@@ -1,10 +1,6 @@
 package com.uas.appme.pedometer.view;
 
-import android.annotation.TargetApi;
 import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.os.Build;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.Gravity;
@@ -51,10 +47,6 @@ import java.util.List;
 
 import lecho.lib.hellocharts.view.LineChartView;
 
-import static android.view.View.DRAWING_CACHE_QUALITY_AUTO;
-import static android.view.View.DRAWING_CACHE_QUALITY_HIGH;
-import static android.view.View.DRAWING_CACHE_QUALITY_LOW;
-
 /**
  * Created by FANGlh on 2017/9/21.
  * function:
@@ -131,10 +123,13 @@ public class PersonalPageActivity extends BaseActivity implements View.OnClickLi
                 .build(), new ResultSubscriber<>(new ResultListener<Object>() {
             @Override
             public void onResponse(Object o) {
-                if (o == null) return;
-
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
                 LogUtil.prinlnLongMsg("appSteps", o.toString());
-                mPersonalStepBean = JSON.parseObject(o.toString(),PersonalStepBean.class);
+                try {
+                    mPersonalStepBean = JSON.parseObject(o.toString(),PersonalStepBean.class);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
                 showStepsInfo();
                 initPolylineData();
             }
@@ -309,55 +304,12 @@ public class PersonalPageActivity extends BaseActivity implements View.OnClickLi
             intent.putExtra("my_steps",mMovementTotalStepsTv.getText().toString());
             intent.putExtra("im_ids","im_ids");
             startActivity(intent);
-//            Bitmap bitmap = getViewToBitmap(line_chart_ll);
-//            share_bitmap_im.setImageBitmap(bitmap);
             closePopupWindow();
         }else if (v.getId() == R.id.not_rankingwith_tv){
             ToastMessage("not_rankingwith_tv");
             closePopupWindow();
         }
     }
-    /**
-     * 获取某视图下截图,返回其BitMap对象
-     * @param view
-     * @return
-     */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    public Bitmap getViewToBitmap(View view) {
-        Bitmap bitmap = null;
-        int width = view.getRight() - view.getLeft();
-        int height = view.getBottom() - view.getTop();
-        final boolean opaque = view.getDrawingCacheBackgroundColor() != 0 || view.isOpaque();
-        Bitmap.Config quality;
-        if (!opaque) {
-            switch (view.getDrawingCacheQuality()) {
-                case DRAWING_CACHE_QUALITY_AUTO:
-                case DRAWING_CACHE_QUALITY_LOW:
-                case DRAWING_CACHE_QUALITY_HIGH:
-                default:
-                    quality = Bitmap.Config.ARGB_8888;
-                    break;
-            }
-        } else {
-            quality = Bitmap.Config.RGB_565;
-        }
-        bitmap = Bitmap.createBitmap(getResources().getDisplayMetrics(),
-                width, height, quality);
-        bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);
-        if (opaque) bitmap.setHasAlpha(false);
-        boolean clear = view.getDrawingCacheBackgroundColor() != 0;
-        Canvas canvas = new Canvas(bitmap);
-        if (clear) {
-            bitmap.eraseColor(view.getDrawingCacheBackgroundColor());
-        }
-        view.computeScroll();
-        final int restoreCount = canvas.save();
-        canvas.translate(-view.getScrollX(), -view.getScrollY());
-        view.draw(canvas);
-        canvas.restoreToCount(restoreCount);
-        canvas.setBitmap(null);
-        return bitmap;
-    }
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

+ 6 - 55
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/ShareStepsActivity.java

@@ -1,26 +1,20 @@
 package com.uas.appme.pedometer.view;
 
 
-import android.annotation.TargetApi;
 import android.content.Intent;
 import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.os.Build;
 import android.os.Bundle;
-import android.view.View;
+import android.util.Log;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
 import com.uas.appme.R;
 
 import de.hdodenhof.circleimageview.CircleImageView;
 
-import static android.view.View.DRAWING_CACHE_QUALITY_AUTO;
-import static android.view.View.DRAWING_CACHE_QUALITY_HIGH;
-import static android.view.View.DRAWING_CACHE_QUALITY_LOW;
-
 /**
  * Created by FANGlh on 2017/9/29.
  * function:
@@ -62,58 +56,15 @@ public class ShareStepsActivity extends BaseActivity {
 
         mMtRankTv.setText(String.valueOf(my_rank));
         mMtStepsTv.setText(my_steps);
-        Bitmap bitmap = getViewToBitmap(mShareLl);
+        Bitmap bitmap = CommonUtil.getViewToBitmap2(mShareLl);
+        mNssb.setImageBitmap(bitmap);
 
         if (bitmap == null) return;
         Intent intent = new Intent("com.modilar.circle.SendShuoshuoActivity");
         intent.putExtra("type", 1);
 
+        Log.i("jibitmap",bitmap+"");
         mNssb.setImageBitmap(bitmap);
-    }
-
-
-    /**
-     * 获取某视图下截图,返回其BitMap对象
-     *
-     * @param view
-     * @return
-     */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    public Bitmap getViewToBitmap(View view) {
-        Bitmap bitmap = null;
-//        int width = view.getRight() - view.getLeft();
-//        int height = view.getBottom() - view.getTop();
-        int width = 480;
-        int height = 640;
-        final boolean opaque = view.getDrawingCacheBackgroundColor() != 0 || view.isOpaque();
-        Bitmap.Config quality;
-        if (!opaque) {
-            switch (view.getDrawingCacheQuality()) {
-                case DRAWING_CACHE_QUALITY_AUTO:
-                case DRAWING_CACHE_QUALITY_LOW:
-                case DRAWING_CACHE_QUALITY_HIGH:
-                default:
-                    quality = Bitmap.Config.ARGB_8888;
-                    break;
-            }
-        } else {
-            quality = Bitmap.Config.RGB_565;
-        }
-        bitmap = Bitmap.createBitmap(getResources().getDisplayMetrics(),
-                width, height, quality);
-        bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);
-        if (opaque) bitmap.setHasAlpha(false);
-        boolean clear = view.getDrawingCacheBackgroundColor() != 0;
-        Canvas canvas = new Canvas(bitmap);
-        if (clear) {
-            bitmap.eraseColor(view.getDrawingCacheBackgroundColor());
-        }
-        view.computeScroll();
-        final int restoreCount = canvas.save();
-        canvas.translate(-view.getScrollX(), -view.getScrollY());
-        view.draw(canvas);
-        canvas.restoreToCount(restoreCount);
-        canvas.setBitmap(null);
-        return bitmap;
+        CommonUtil.saveImageToLocal(this,bitmap);
     }
 }

+ 5 - 5
app_modular/appme/src/main/res/layout/share_steps_activity.xml

@@ -89,11 +89,11 @@
         </LinearLayout>
     </LinearLayout>
     </LinearLayout>
-
     <ImageView
         android:id="@+id/nssb"
-        android:layout_width="match_parent"
-        android:layout_height="600dp"
-        android:src="@drawable/bg"
-        android:visibility="gone"/>
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        android:src="@drawable/rankb"/>
+
 </LinearLayout>

+ 2 - 2
version.gradle

@@ -11,8 +11,8 @@ ext {
             minSdkVersion    : 9,
             targetSdkVersion : 24,
             javaVersion      : JavaVersion.VERSION_1_8,
-            versionCode      : 118,
-            versionName      : '5.9.6',
+            versionCode      : 119,
+            versionName      : '5.9.7',
     ]
 
     depsVersion = [