Sfoglia il codice sorgente

ME-Info-LongClick-InfoCode

FANGLH 8 anni fa
parent
commit
5e8a927132

+ 1 - 5
WeiChat/build.gradle

@@ -77,7 +77,6 @@ dexcount {
 }
 
 dependencies {
-    
     compile project(':pullToRefershLibraryMy')
     compile project(':MPAndroidChart')
     compile project(':libedittextformlibrary')
@@ -124,11 +123,9 @@ dependencies {
     compile 'de.hdodenhof:circleimageview:2.1.0'
     compile 'joda-time:joda-time:2.9.4'
     compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
-    
     compile 'com.android.support:appcompat-v7:24.2.1'
     compile 'com.android.support:cardview-v7:24.2.1'
     compile 'com.android.support:design:24.2.1'
-    
     compile 'com.commit451:PhotoView:1.2.5'
     compile 'me.gujun.android.taggroup:library:1.4@aar'
     compile 'com.umeng.analytics:analytics:latest.integration'
@@ -136,11 +133,10 @@ dependencies {
     compile 'cat.ereza:customactivityoncrash:1.5.0'
     compile 'se.emilsjolander:stickylistheaders:2.7.0'
     compile 'com.github.TonicArtos:StickyGridHeaders:1.0.1'
-
     compile 'com.afollestad.material-dialogs:core:0.9.0.2'
-    
     testCompile 'junit:junit:4.12'
     androidTestCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
     debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
     releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
+    compile files('libs/core.jar')
 }

+ 3 - 0
WeiChat/src/main/AndroidManifest.xml

@@ -936,6 +936,9 @@
             android:label="@string/crm_creat_business" />
         <activity android:name=".ui.erp.activity.setting.SelectLanguageActivity"></activity>
         <activity android:name=".ui.erp.activity.oa.SearchSelectActivity"></activity>
+
+        <activity android:name=".ui.me.InfoCodeActivity"
+            android:label="二维码名片"></activity>
     </application>
 
 </manifest>

+ 22 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/AvatarHelper.java

@@ -1,5 +1,7 @@
 package com.xzjmyk.pm.activity.helper;
 
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.os.Handler;
 import android.os.Looper;
 import android.text.TextUtils;
@@ -14,9 +16,11 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -269,6 +273,24 @@ public class AvatarHelper {
         }
     }
 
+    //根据loginUserId,获取该用户头像的Bitmap对象
+    //Caused by: Android.os.NetworkOnMainThreadException,查了下原因上在4.0之后在主线程里面执行Http请求都会报这个错,大概是怕Http请求时间太长造成程序假死的情况吧。
+    public static Bitmap returnBitmap(String userId,boolean isThumb){
+        final  String urlpath = getAvatarUrl(userId, isThumb);
+        Bitmap mBitmap = null;
+        try {
+            URL url = new URL(urlpath);
+            URLConnection conn = url.openConnection();
+            conn.connect();
+            InputStream in;
+            in = conn.getInputStream();
+            mBitmap = BitmapFactory.decodeStream(in);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return mBitmap;
+    }
+
     private void display(String url, ImageAware imageAware, boolean isThumb) {
         if (isThumb) {
             ImageLoader.getInstance().displayImage(url, imageAware, MyApplication.mAvatarRoundImageOptions);

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/FlihtsDateSelectActivity.java

@@ -269,7 +269,7 @@ public class FlihtsDateSelectActivity extends BaseActivity implements DatePicker
             if (models.get(position).getType() == 2){
                 viewHolder.docmainmsg_list.setText(models.get(position).getName());
             }else {
-                viewHolder.docmainmsg_list.setText(models.get(position).getName() + getString(R.string.sign_flights));
+                viewHolder.docmainmsg_list.setText(models.get(position).getName() + " "+getString(R.string.sign_flights));
             }
             viewHolder.docmainmsg_value.setText(models.get(position).getTimeTable());
             return convertView;

+ 142 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/InfoCodeActivity.java

@@ -1,9 +1,150 @@
 package com.xzjmyk.pm.activity.ui.me;
 
+import android.graphics.Bitmap;
+import android.graphics.Matrix;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+
+import java.io.UnsupportedEncodingException;
+
 /**
  * Created by FANGlh on 2017/6/5.
  * function:
  */
 
-public class InfoCodeActivity {
+public class InfoCodeActivity extends BaseActivity {
+    @ViewInject(R.id.code_main)
+    private ImageView code_main;
+    @ViewInject(R.id.common_docui_photo_img)
+    private ImageView photo_im;
+    @ViewInject(R.id.common_docui_name_tv)
+    private TextView name_tv;
+    @ViewInject(R.id.common_docui_Section_tv)
+    private TextView section_tv;
+    // 图片宽度的一般
+    private static final int IMAGE_HALFWIDTH = 20;
+    // 显示二维码图片
+    private ImageView imageview;
+    // 插入到二维码里面的图片对象
+    private Bitmap mBitmap;
+    // 需要插图图片的大小 这里设定为40*40
+    int[] pixels = new int[2*IMAGE_HALFWIDTH * 2*IMAGE_HALFWIDTH];
+    private String uu_phone;
+    private String uu_name;
+    private String loginUserId;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.info_code_main);
+        ViewUtils.inject(this);
+        initView();
+    }
+
+    private void initView() {
+        progressDialog.show();
+        uu_phone = MyApplication.getInstance().mLoginUser.getTelephone();
+        uu_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
+        loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+
+        name_tv.setText(uu_name + "");
+        section_tv.setText(uu_phone+"");
+        // 构造对象
+        imageview = new ImageView(this);
+        // 构造需要插入的图片对象
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                mBitmap = AvatarHelper.getInstance().returnBitmap(loginUserId,false);
+                // 缩放图片
+                Matrix m = new Matrix();
+                float sx = (float) 2*IMAGE_HALFWIDTH / mBitmap.getWidth();
+                float sy = (float) 2*IMAGE_HALFWIDTH / mBitmap.getHeight();
+                m.setScale(sx, sy);
+                // 重新构造一个40*40的图片
+                mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),
+                        mBitmap.getHeight(), m, false);
+            }
+        }).start();
+
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    String s = "{\n"
+                            +  "\"uu_name\":\"" + uu_name + "\",\n"+
+                            "\"uu_phone\":\"" + uu_phone + "\"\n"
+                            +"}";
+
+                    if (mBitmap == null) {
+                        Log.i("mBitmap","null");
+                        mBitmap = ((BitmapDrawable) getResources().getDrawable(
+                                R.drawable.uuu)).getBitmap();
+
+                    }
+                    Log.i("mBitmap",mBitmap.toString());
+                    code_main.setImageBitmap(cretaeBitmap(new String(s.getBytes(),
+                            "ISO-8859-1")));
+                    AvatarHelper.getInstance().display(loginUserId, photo_im, true, false);
+                } catch (WriterException e) {
+                    e.printStackTrace();
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
+                }
+                progressDialog.dismiss();
+            }
+        },1000);
+    }
+
+    /**
+     * 生成二维码
+     * @throws WriterException
+     */
+    public Bitmap cretaeBitmap(String str) throws WriterException {
+        // 生成二维矩阵,编码时指定小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
+        BitMatrix matrix = new MultiFormatWriter().encode(str,
+                BarcodeFormat.QR_CODE, 300, 300);
+        int width = matrix.getWidth();
+        int height = matrix.getHeight();
+        // 二维矩阵转为一维像素数组,也就是一直横着排了
+        int halfW = width / 2;
+        int halfH = height / 2;
+        int[] pixels = new int[width * height];
+        for (int y = 0; y < height; y++) {
+            for (int x = 0; x < width; x++) {
+                if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH
+                        && y < halfH + IMAGE_HALFWIDTH) {
+                    pixels[y * width + x] = mBitmap.getPixel(x - halfW + IMAGE_HALFWIDTH, y
+                            - halfH + IMAGE_HALFWIDTH);
+                } else {
+                    if (matrix.get(x, y)) {
+                        pixels[y * width + x] = 0xff000000;
+                    }
+                }
+
+            }
+        }
+        Bitmap bitmap = Bitmap.createBitmap(width, height,
+                Bitmap.Config.ARGB_8888);
+        // 通过像素数组生成bitmap
+        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
+
+        return bitmap;
+    }
 }

+ 13 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -34,12 +34,12 @@ import com.xzjmyk.pm.activity.ui.circle.BusinessCircleActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.BaseInfoActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.OAMainActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.Master;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.FlexJsonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import  com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.MasterDialog;
 import com.xzjmyk.pm.activity.ui.tool.SingleImagePreviewActivity;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
@@ -321,6 +321,18 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
 //        iv_desc_oa.setVisibility(seting ? View.GONE : View.VISIBLE);
         CommonUtil.clearSharedPreferences(ct, "seting");
         CommonUtil.clearSharedPreferences(ct, "seting_1");
+
+        showInfoCode(); // TODO 触发个人信息二维码展示事件
+    }
+
+    private void showInfoCode() {
+        rl_info.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                startActivity(new Intent(ct,InfoCodeActivity.class));
+                return true;
+            }
+        });
     }
 
     @Override

+ 67 - 2
WeiChat/src/main/res/layout/info_code_main.xml

@@ -1,6 +1,71 @@
 <?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">
 
-</LinearLayout>
+    <RelativeLayout
+        android:id="@+id/common_docdata_rl"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:padding="5dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:visibility="visible"
+        android:layout_marginTop="15dp"
+        >
+
+        <ImageView
+            android:id="@+id/common_docui_photo_img"
+            android:layout_width="45dp"
+            android:layout_height="45dp"
+            android:contentDescription="@string/app_name"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="5dp" />
+
+        <TextView
+            android:id="@+id/common_docui_name_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_toRightOf="@+id/common_docui_photo_img"
+            android:textColor="#575757"
+            android:textSize="@dimen/text_hine"
+            android:layout_marginTop="10dp"
+
+            />
+        <TextView
+            android:id="@+id/common_docui_Section_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_toRightOf="@+id/common_docui_photo_img"
+            android:layout_below="@id/common_docui_name_tv"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_hine"
+            android:layout_marginTop="4dp"/>
+        <TextView
+            android:id="@+id/work1_daily_detail_status_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="0dp"
+            android:textSize="@dimen/text_hine"/>
+    </RelativeLayout>
+    <ImageView
+        android:id="@+id/code_main"
+        android:layout_width="250dp"
+        android:layout_height="250dp"
+        android:layout_below="@+id/common_docdata_rl"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="10dp"
+        />
+
+    <TextView
+        android:layout_marginTop="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="扫一扫上面的二维码图案,加我好友"
+        android:layout_below="@+id/code_main"
+        android:gravity="center_horizontal"/>
+</RelativeLayout>