Andoid开发中生成二维码
生活随笔
收集整理的這篇文章主要介紹了
Andoid开发中生成二维码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
第一步:
????????確定我們二維碼的位置,即是在我們應用的哪個頁面的哪個位置,簡單講就是用一個ImageView把二維碼展示出來,我們就把二維碼展示在下面布局activity_main.xml中的ImageView上:
<?xml?version="1.0"?encoding="utf-8"?> <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"?><LinearLayout?android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"android:gravity="center_horizontal"><ImageViewandroid:id="@+id/imag"android:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@drawable/ic_launcher"android:layout_gravity="center"></ImageView></LinearLayout></LinearLayout>第二步:定義一個生成二維碼的工具類:QRUtils.java? (注意:定義之前不要忘記在項目中要導入ZXing相關的jar包)
既core.jar這個包? jar包下載地址? 最近使用
package?com.utils;import?java.util.EnumMap; import?java.util.Map;import?android.graphics.Bitmap; import?android.graphics.Canvas; import?android.graphics.Matrix; import?android.graphics.Paint; import?android.text.TextUtils;import?com.google.zxing.BarcodeFormat; import?com.google.zxing.EncodeHintType; import?com.google.zxing.MultiFormatWriter; import?com.google.zxing.common.BitMatrix;public?class?QRUtils?{private?static?final?int?WHITE?=?0xFFFFFFFF;private?static?final?int?BLACK?=?0xFF000000;/***?將字符串按照指定大小生成二維碼圖片*/public?static?Bitmap?encodeToQR(String?contentsToEncode,?int?dimension)throws?Exception?{if?(TextUtils.isEmpty(contentsToEncode))return?null;BarcodeFormat?format?=?BarcodeFormat.QR_CODE;Map?hints?=?new?EnumMap(EncodeHintType.class);hints.put(EncodeHintType.CHARACTER_SET,?"UTF-8");BitMatrix?result?=?new?MultiFormatWriter().encode(contentsToEncode,format,?dimension,?dimension,?hints);int?width?=?result.getWidth();int?height?=?result.getHeight();int[]?pixels?=?new?int[width?*?height];for?(int?y?=?0;?y?<?height;?y++)?{int?offset?=?y?*?width;for?(int?x?=?0;?x?<?width;?x++)?{pixels[offset?+?x]?=?result.get(x,?y)???BLACK?:?WHITE;}}Bitmap?bitmap?=?Bitmap.createBitmap(width,?height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels,?0,?width,?0,?0,?width,?height);return?bitmap;}public?static?Bitmap?encodeToQRWidth(String?contentsToEncode,?int?dimension)throws?Exception?{if?(TextUtils.isEmpty(contentsToEncode))return?null;BarcodeFormat?format?=?BarcodeFormat.QR_CODE;@SuppressWarnings("unchecked")Map?hints?=?new?EnumMap(EncodeHintType.class);hints.put(EncodeHintType.CHARACTER_SET,?"UTF-8");BitMatrix?result?=?new?MultiFormatWriter().encode(contentsToEncode,format,?dimension,?dimension,?hints);int?width?=?result.getWidth();int?height?=?result.getHeight();boolean?isFirstBlack?=?true;int?startX?=?0;int?startY?=?0;int[]?pixels?=?new?int[width?*?height];for?(int?y?=?0;?y?<?height;?y++)?{int?offset?=?y?*?width;for?(int?x?=?0;?x?<?width;?x++)?{pixels[offset?+?x]?=?result.get(x,?y)???BLACK?:?WHITE;if?(result.get(x,?y)?&&?isFirstBlack)?{isFirstBlack?=?false;startX?=?x;startY?=?y;}}}Bitmap?bitmap?=?Bitmap.createBitmap(width,?height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels,?0,?width,?0,?0,?width,?height);Matrix?m?=?new?Matrix();float?sx?=?(width?+?2f?*?startX)?/?width;float?sy?=?(height?+?2f?*?startY)?/?height;m.postScale(sx,?sy);Bitmap?qrBitmap?=?Bitmap.createBitmap(width,?height,Bitmap.Config.ARGB_8888);Canvas?canvas?=?new?Canvas(qrBitmap);canvas.translate(-startX,?-startY);Paint?paint?=?new?Paint();paint.setAntiAlias(true);canvas.drawBitmap(bitmap,?m,?paint);canvas.save();return?qrBitmap;}}第三步:在我們既我們的主Activity:MainActivity.java
package?com.action;import?android.app.Activity; import?android.graphics.Bitmap; import?android.os.Bundle; import?android.util.DisplayMetrics; import?android.view.ViewGroup; import?android.widget.ImageView; import?android.widget.Toast; import?com.utils.*;public?class?MainActivity?extends?Activity?{private?ImageView?imag;@Overrideprotected?void?onCreate(Bundle?savedInstanceState)?{super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();}protected?void?initViews()?{imag?=?(ImageView)?findViewById(R.id.imag);DisplayMetrics?outMetrics?=?new?DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(outMetrics);int?w?=?outMetrics.widthPixels?*?8?/?11;//?設置寬度ViewGroup.LayoutParams?layoutParams?=?imag.getLayoutParams();layoutParams.height?=?layoutParams.width?=?w;//?設置高度imag.setLayoutParams(layoutParams);try?{Bitmap?bitmap?=?QRUtils.encodeToQRWidth("http://write.blog.csdn.net/",?w);//?要生成二維碼的內容,我這就是一個網址imag.setImageBitmap(bitmap);}?catch?(Exception?e)?{e.printStackTrace();Toast.makeText(this,?"生成二維碼失敗",?Toast.LENGTH_SHORT);}}}三步完成我們的二維碼生成,是不是很簡單!!
轉載于:https://my.oschina.net/symahll/blog/482474
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Andoid开发中生成二维码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到陌生人给自己钱是什么意思
- 下一篇: 孕妇梦到狂风暴雨是啥意思