日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andoid开发中生成二维码

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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开发中生成二维码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。