You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/08/01 07:56:01 UTC
[1/3] incubator-weex git commit: + [android] support new feature
image component can save to Photo Album
Repository: incubator-weex
Updated Branches:
refs/heads/0.16-dev b2da213a7 -> a877605be
+ [android] support new feature image component can save to Photo Album
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c4cec2b0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c4cec2b0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c4cec2b0
Branch: refs/heads/0.16-dev
Commit: c4cec2b019e2f5a85fd17cd715b4ab0f62446d8b
Parents: a54bcb9
Author: miomin <69...@qq.com>
Authored: Thu Jul 27 15:29:16 2017 +0800
Committer: miomin <69...@qq.com>
Committed: Thu Jul 27 15:29:16 2017 +0800
----------------------------------------------------------------------
.../com/taobao/weex/ui/component/WXImage.java | 59 +++++++
.../taobao/weex/utils/WXViewToImageUtil.java | 160 +++++++++++++++++++
2 files changed, 219 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c4cec2b0/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
index 89ceedc..1820989 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
@@ -18,13 +18,16 @@
*/
package com.taobao.weex.ui.component;
+import android.Manifest;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
@@ -34,6 +37,8 @@ import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.adapter.IWXImgLoaderAdapter;
import com.taobao.weex.adapter.URIAdapter;
import com.taobao.weex.annotation.Component;
+import com.taobao.weex.annotation.JSMethod;
+import com.taobao.weex.bridge.JSCallback;
import com.taobao.weex.common.Constants;
import com.taobao.weex.common.WXImageSharpen;
import com.taobao.weex.common.WXImageStrategy;
@@ -46,6 +51,7 @@ import com.taobao.weex.ui.view.border.BorderDrawable;
import com.taobao.weex.utils.ImageDrawable;
import com.taobao.weex.utils.ImgURIUtil;
import com.taobao.weex.utils.SingleFunctionParser;
+import com.taobao.weex.utils.WXViewToImageUtil;
import com.taobao.weex.utils.WXDomUtils;
import com.taobao.weex.utils.WXLogUtils;
import com.taobao.weex.utils.WXUtils;
@@ -62,6 +68,11 @@ import java.util.Map;
*/
@Component(lazyload = false)
public class WXImage extends WXComponent<ImageView> {
+
+ public static final String SUCCEED = "success";
+ public static final String PATH = "path";
+ public static final String ERRORDESC = "errorDesc";
+
private String mSrc;
private int mBlurRadius;
@@ -332,6 +343,54 @@ public class WXImage extends WXComponent<ImageView> {
}
}
+ /**
+ * Need permission {android.permission.WRITE_EXTERNAL_STORAGE}
+ */
+ @JSMethod(uiThread = false)
+ public void save(final JSCallback saveStatuCallback) {
+
+ if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ if (saveStatuCallback != null) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(SUCCEED, false);
+ result.put(ERRORDESC,"Permission denied: android.permission.WRITE_EXTERNAL_STORAGE");
+ saveStatuCallback.invoke(result);
+ }
+ return;
+ }
+
+ if (mHost == null) {
+ if (saveStatuCallback != null) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(SUCCEED, false);
+ result.put(ERRORDESC,"Image component not initialized");
+ saveStatuCallback.invoke(result);
+ }
+ return;
+ }
+
+ WXViewToImageUtil.generateImage(mHost, 0, 0xfff8f8f8, new WXViewToImageUtil.OnImageSavedCallback() {
+ @Override
+ public void onSaveSucceed(String path) {
+ if (saveStatuCallback != null) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(SUCCEED, true);
+ saveStatuCallback.invoke(result);
+ }
+ }
+
+ @Override
+ public void onSaveFailed(String errorDesc) {
+ if (saveStatuCallback != null) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(SUCCEED, false);
+ result.put(ERRORDESC,errorDesc);
+ saveStatuCallback.invoke(result);
+ }
+ }
+ });
+ }
+
public interface Measurable {
int getNaturalWidth();
int getNaturalHeight();
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c4cec2b0/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
new file mode 100755
index 0000000..df34a26
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.utils;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.MediaStore;
+import android.support.annotation.ColorInt;
+import android.view.View;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * Created by miomin on 7/25/17.
+ */
+public class WXViewToImageUtil {
+
+ public static int mBackgroundColor = Color.TRANSPARENT;
+
+ /**
+ * Use this variable to ensure that only one save image task occurs at the same time
+ */
+ private static boolean isSaving = false;
+
+ /**
+ * Generate image and return path via callback
+ */
+ public static void generateImage(final View imageView, final int width,
+ @ColorInt final int backgroundColor, final OnImageSavedCallback mOnImageSavedCallback) {
+
+ mBackgroundColor = backgroundColor;
+
+ // The new task can not be triggered until the last task completes
+ if (isSaving) {
+ return;
+ }
+ isSaving = true;
+
+ // Only one save image task occurs at the same time
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ // Generate bitmap from ImageView
+ Bitmap bitmap = getImageViewToBitmap(imageView, width);
+
+ if (bitmap == null) {
+ if (mOnImageSavedCallback != null) {
+ mOnImageSavedCallback.onSaveFailed("Image is empty");
+ }
+ return;
+ }
+
+ // Sava bitmap to gallery
+ final String destPath = saveBitmapToGallery(imageView.getContext(), bitmap, mOnImageSavedCallback);
+
+ new Handler(Looper.getMainLooper()).post(new Runnable() {
+ @Override
+ public void run() {
+ if (mOnImageSavedCallback != null) {
+ mOnImageSavedCallback.onSaveSucceed(destPath);
+ imageView.getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(destPath)));
+ }
+ }
+ });
+ isSaving = false;
+ }
+ }).start();
+ }
+
+ /**
+ * Save bitmap to gallery
+ * @return image save path
+ */
+ public static String saveBitmapToGallery(Context context, Bitmap bitmap, final OnImageSavedCallback mOnImageSavedCallback) {
+
+ // Save image
+ File appDir = new File(Environment.getExternalStorageDirectory(), "Weex");
+ if (!appDir.exists()) {
+ appDir.mkdir();
+ }
+
+ String fileName = System.currentTimeMillis() + ".jpg";
+ File file = new File(appDir, fileName);
+
+ try {
+ FileOutputStream fos = new FileOutputStream(file);
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
+ fos.flush();
+ fos.close();
+ } catch (FileNotFoundException e) {
+ if (mOnImageSavedCallback != null)
+ mOnImageSavedCallback.onSaveFailed("Image creation failed due to system reason");
+ e.printStackTrace();
+ } catch (IOException e) {
+ if (mOnImageSavedCallback != null)
+ mOnImageSavedCallback.onSaveFailed("Android IOException");
+ e.printStackTrace();
+ }
+
+ // Insert the image file into the system gallery
+ try {
+ MediaStore.Images.Media.insertImage(context.getContentResolver(),
+ file.getAbsolutePath(), fileName, null);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ // Notify the system gallery update
+ context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + appDir.getAbsolutePath() + "/" + fileName)));
+
+ return file.getAbsolutePath();
+ }
+
+ /**
+ * Save state callback
+ */
+ public interface OnImageSavedCallback {
+ void onSaveSucceed(String path);
+ void onSaveFailed(String errorDesc);
+ }
+
+ /**
+ * Get bitmap from imageview
+ */
+ public static Bitmap getImageViewToBitmap(final View view, int width) {
+ if (view.getWidth() <= 0 || view.getHeight() <= 0) {
+ view.measure(View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
+ View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
+ view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
+ }
+
+ view.setDrawingCacheEnabled(true);
+ Bitmap bitmap = view.getDrawingCache();
+ return bitmap;
+ }
+}
[2/3] incubator-weex git commit: * [android] use ThreadExecutor to
manage work thread
Posted by so...@apache.org.
* [android] use ThreadExecutor to manage work thread
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/75414781
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/75414781
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/75414781
Branch: refs/heads/0.16-dev
Commit: 754147818a02704c8fb8fac9a4991ea4d1c692a4
Parents: c4cec2b
Author: miomin <69...@qq.com>
Authored: Tue Aug 1 15:31:47 2017 +0800
Committer: miomin <69...@qq.com>
Committed: Tue Aug 1 15:31:47 2017 +0800
----------------------------------------------------------------------
.../java/com/alibaba/weex/IndexActivity.java | 14 ++++++
.../main/java/com/taobao/weex/WXSDKManager.java | 10 ++++
.../taobao/weex/common/WXWorkThreadManager.java | 48 ++++++++++++++++++++
.../com/taobao/weex/ui/component/WXImage.java | 11 ++++-
.../taobao/weex/utils/WXViewToImageUtil.java | 23 +++-------
5 files changed, 89 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75414781/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
index 8469b26..866733a 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
@@ -51,6 +51,7 @@ public class IndexActivity extends AbstractWeexActivity {
private static final String TAG = "IndexActivity";
private static final int CAMERA_PERMISSION_REQUEST_CODE = 0x1;
+ private static final int WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 0x2;
private static final String DEFAULT_IP = "your_current_IP";
private static String sCurrentIp = DEFAULT_IP; // your_current_IP
@@ -102,6 +103,18 @@ public class IndexActivity extends AbstractWeexActivity {
};
LocalBroadcastManager.getInstance(this).registerReceiver(mReloadReceiver, new IntentFilter(WXSDKEngine.JS_FRAMEWORK_RELOAD));
+
+ requestWeexPermission();
+ }
+
+ private void requestWeexPermission() {
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ Toast.makeText(this, "please give me the permission", Toast.LENGTH_SHORT).show();
+ } else {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE);
+ }
+ }
}
@Override
@@ -147,6 +160,7 @@ public class IndexActivity extends AbstractWeexActivity {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == CAMERA_PERMISSION_REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startActivity(new Intent(this, CaptureActivity.class));
+ } else if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Toast.makeText(this, "request camara permission fail!", Toast.LENGTH_SHORT).show();
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75414781/android/sdk/src/main/java/com/taobao/weex/WXSDKManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKManager.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKManager.java
index 0b43fa6..4e144e0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKManager.java
@@ -45,6 +45,7 @@ import com.taobao.weex.bridge.WXValidateProcessor;
import com.taobao.weex.common.WXRefreshData;
import com.taobao.weex.common.WXRuntimeException;
import com.taobao.weex.common.WXThread;
+import com.taobao.weex.common.WXWorkThreadManager;
import com.taobao.weex.dom.WXDomManager;
import com.taobao.weex.ui.WXRenderManager;
import com.taobao.weex.utils.WXLogUtils;
@@ -64,6 +65,7 @@ public class WXSDKManager {
private static volatile WXSDKManager sManager;
private static AtomicInteger sInstanceId = new AtomicInteger(0);
private final WXDomManager mWXDomManager;
+ private final WXWorkThreadManager mWXWorkThreadManager;
private WXBridgeManager mBridgeManager;
/** package **/ WXRenderManager mWXRenderManager;
@@ -97,6 +99,7 @@ public class WXSDKManager {
mWXRenderManager = renderManager;
mWXDomManager = new WXDomManager(mWXRenderManager);
mBridgeManager = WXBridgeManager.getInstance();
+ mWXWorkThreadManager = new WXWorkThreadManager();
}
/**
@@ -195,6 +198,10 @@ public class WXSDKManager {
return mWXRenderManager;
}
+ public WXWorkThreadManager getWXWorkThreadManager() {
+ return mWXWorkThreadManager;
+ }
+
public @Nullable WXSDKInstance getSDKInstance(String instanceId) {
return instanceId == null? null : mWXRenderManager.getWXSDKInstance(instanceId);
}
@@ -207,6 +214,9 @@ public class WXSDKManager {
if (mWXDomManager != null) {
mWXDomManager.destroy();
}
+ if (mWXWorkThreadManager != null) {
+ mWXWorkThreadManager.destroy();
+ }
}
@Deprecated
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75414781/android/sdk/src/main/java/com/taobao/weex/common/WXWorkThreadManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXWorkThreadManager.java b/android/sdk/src/main/java/com/taobao/weex/common/WXWorkThreadManager.java
new file mode 100644
index 0000000..3510d54
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXWorkThreadManager.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.common;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * Class for managing work thread
+ */
+public final class WXWorkThreadManager {
+
+ private ExecutorService singleThreadExecutor;
+
+ public WXWorkThreadManager() {
+ singleThreadExecutor = Executors.newSingleThreadExecutor();
+ }
+
+ public void post(Runnable task) {
+ if (singleThreadExecutor != null)
+ singleThreadExecutor.execute(task);
+ }
+
+ /**
+ * Destroy current instance
+ */
+ public void destroy() {
+ if (singleThreadExecutor != null)
+ singleThreadExecutor.shutdown();
+ singleThreadExecutor = null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75414781/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
index 1820989..db58d99 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
@@ -70,7 +70,6 @@ import java.util.Map;
public class WXImage extends WXComponent<ImageView> {
public static final String SUCCEED = "success";
- public static final String PATH = "path";
public static final String ERRORDESC = "errorDesc";
private String mSrc;
@@ -369,6 +368,16 @@ public class WXImage extends WXComponent<ImageView> {
return;
}
+ if (mSrc == null || mSrc.equals("")) {
+ if (saveStatuCallback != null) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(SUCCEED, false);
+ result.put(ERRORDESC,"Image does not have the correct src");
+ saveStatuCallback.invoke(result);
+ }
+ return;
+ }
+
WXViewToImageUtil.generateImage(mHost, 0, 0xfff8f8f8, new WXViewToImageUtil.OnImageSavedCallback() {
@Override
public void onSaveSucceed(String path) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/75414781/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
index df34a26..b486fb5 100755
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXViewToImageUtil.java
@@ -29,6 +29,9 @@ import android.os.Looper;
import android.provider.MediaStore;
import android.support.annotation.ColorInt;
import android.view.View;
+
+import com.taobao.weex.WXSDKManager;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -42,11 +45,6 @@ public class WXViewToImageUtil {
public static int mBackgroundColor = Color.TRANSPARENT;
/**
- * Use this variable to ensure that only one save image task occurs at the same time
- */
- private static boolean isSaving = false;
-
- /**
* Generate image and return path via callback
*/
public static void generateImage(final View imageView, final int width,
@@ -54,18 +52,12 @@ public class WXViewToImageUtil {
mBackgroundColor = backgroundColor;
- // The new task can not be triggered until the last task completes
- if (isSaving) {
- return;
- }
- isSaving = true;
-
// Only one save image task occurs at the same time
- new Thread(new Runnable() {
+ WXSDKManager.getInstance().getWXWorkThreadManager().post(new Thread(new Runnable() {
@Override
public void run() {
// Generate bitmap from ImageView
- Bitmap bitmap = getImageViewToBitmap(imageView, width);
+ Bitmap bitmap = getBitmapFromImageView(imageView, width);
if (bitmap == null) {
if (mOnImageSavedCallback != null) {
@@ -86,9 +78,8 @@ public class WXViewToImageUtil {
}
}
});
- isSaving = false;
}
- }).start();
+ }));
}
/**
@@ -146,7 +137,7 @@ public class WXViewToImageUtil {
/**
* Get bitmap from imageview
*/
- public static Bitmap getImageViewToBitmap(final View view, int width) {
+ public static Bitmap getBitmapFromImageView(final View view, int width) {
if (view.getWidth() <= 0 || view.getHeight() <= 0) {
view.measure(View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
[3/3] incubator-weex git commit: Merge branch
'android-feature-0.16-image-save' of http://github.com/miomin/incubator-weex
into 0.16-dev
Posted by so...@apache.org.
Merge branch 'android-feature-0.16-image-save' of http://github.com/miomin/incubator-weex into 0.16-dev
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/a877605b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a877605b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a877605b
Branch: refs/heads/0.16-dev
Commit: a877605be038570f0f64f7d2ff83fcba8f0ad070
Parents: b2da213 7541478
Author: sospartan <so...@apache.org>
Authored: Tue Aug 1 15:56:04 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Tue Aug 1 15:56:04 2017 +0800
----------------------------------------------------------------------
.../java/com/alibaba/weex/IndexActivity.java | 14 ++
.../main/java/com/taobao/weex/WXSDKManager.java | 10 ++
.../taobao/weex/common/WXWorkThreadManager.java | 48 ++++++
.../com/taobao/weex/ui/component/WXImage.java | 68 +++++++++
.../taobao/weex/utils/WXViewToImageUtil.java | 151 +++++++++++++++++++
5 files changed, 291 insertions(+)
----------------------------------------------------------------------