您的位置:首页 > 其它

[置顶] 二维码的生成

2016-07-20 14:55 274 查看
                                                                                     二维码大家都有接触过,怎么生成呢,下面我们来看看简单的DEMO实现

         首先要导入一个jar包  core.jar  ,当然你也可以用依赖包,MaActivity的代码很少:

import java.util.Hashtable;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends Activity {

private EditText et_only_company;
private EditText et_only_position;
private EditText et_only_phone;
private EditText et_only_email;
private EditText et_only_web1;
private EditText et_only_add;
private EditText et_only_note;
private EditText et_only_name;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_only_name = (EditText) findViewById(R.id.et_only_name);
et_only_company = (EditText) findViewById(R.id.et_only_company);
et_only_position = (EditText) findViewById(R.id.et_only_position);
et_only_phone = (EditText) findViewById(R.id.et_only_phone);
et_only_email = (EditText) findViewById(R.id.et_only_email);
et_only_web1 = (EditText) findViewById(R.id.et_only_web1);
et_only_add = (EditText) findViewById(R.id.et_only_add);
et_only_note = (EditText) findViewById(R.id.et_only_note);

findViewById(R.id.but).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = et_only_name.getText().toString().trim();
String company = et_only_company.getText().toString().trim();
String position = et_only_position.getText().toString().trim();
String phone = et_only_phone.getText().toString().trim();
String email = et_only_email.getText().toString().trim();
String web1 = et_only_web1.getText().toString().trim();
String add = et_only_add.getText().toString().trim();
String note = et_only_note.getText().toString().trim();
String contents = "BEGIN:VCARD\nVERSION:3.0\n" + "N:" + name
+ "\nORG:" + company + "\nTITLE:" + position
+ "\nNOTE:" + note + "\nTEL:" + phone + "\nADR:" + add
+ "\nURL:" + web1 + "\nEMAIL:" + email + "\nEND:VCARD";
try {
Bitmap bm = qr_code(contents, BarcodeFormat.QR_CODE);

ImageView img = (ImageView) findViewById(R.id.img_only);

img.setImageBitmap(bm);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

}

public Bitmap qr_code(String string, BarcodeFormat format)
throws WriterException {
MultiFormatWriter writer = new MultiFormatWriter();
Hashtable<EncodeHintType, String> hst = new Hashtable<EncodeHintType, String>();
hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix matrix = writer.encode(string, format, 400, 400, hst);
int width = matrix.getWidth();
int height = matrix.getHeight();
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (matrix.get(x, y)) {
pixels[y * width + x] = 0xff000000;
}

}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
// 通过像素数组生成bitmap,具体参考api
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}

}


                    再来看看布局:  activity_main.xml      当然你可以只写一个输入框来生成二维码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/ll"
>
<ImageView
android:id="@+id/img_only"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_gravity="center_horizontal" />
<!-- 姓名 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名" />

<EditText
android:id="@+id/et_only_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="必填" />
</LinearLayout>

<!-- 公司 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="公司" />

<EditText
android:id="@+id/et_only_company"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>

<!-- 职位 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="职位" />

<EditText
android:id="@+id/et_only_position"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>

<!-- 电话 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话" />

<EditText
android:id="@+id/et_only_phone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>
<!-- 邮箱 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="邮箱" />

<EditText
android:id="@+id/et_only_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>

<!-- 网址 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网址" />

<EditText
android:id="@+id/et_only_web1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="http://" />
</LinearLayout>

<!-- 地址 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="地址" />

<EditText
android:id="@+id/et_only_add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>

<!-- 备注 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="备注" />

<EditText
android:id="@+id/et_only_note"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="选填" />
</LinearLayout>
<Button android:id="@+id/but"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="生成名片"/>
</LinearLayout>

</RelativeLayout>


       到这来就OK啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: