2015-04-20 3 views
1
public class AndroidBarcodeView extends ImageView { 

    public AndroidBarcodeView(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     try { 

      testQRCode(canvas); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    private static void testQRCode(Canvas canvas) throws Exception { 
     QRCode barcode = new QRCode(); 

     /* 
     * QRCode Valid data char set: numeric data (digits 0 - 9); alphanumeric 
     * data (digits 0 - 9; upper case letters A -Z; nine other characters: 
     * space, $ % * + - ./:); byte data (default: ISO/IEC 8859-1); Kanji 
     * characters 
     */ 
     // BIZCARD:N:Kelly;X:Goto;T:Design Ethnographer;C:gotomedia LLC;A:2169 
     // Folsom Street 
     // M302;B:4158647007;F:4158647004;M:4159907005;E:[email protected];; 
     // barcode.setData("BIZCARD:N:Kelly;X:Goto;T:Design Ethnographer;C:gotomedia LLC;A:2169 Folsom Street M302;B:4158647007;F:4158647004;M:4159907005;E:[email protected];;"); 

     barcode.setData("StudentId:11;SectionId:A2;TimeStamp:20-04-2015 12:18PM;;"); 

     barcode.setDataMode(QRCode.M_AUTO); 
     barcode.setVersion(1); 
     barcode.setEcl(QRCode.ECL_L); 

     // if you want to encode GS1 compatible QR Code, you need set FNC1 mode 
     // to IBarcode.FNC1_ENABLE 
     barcode.setFnc1Mode(IBarcode.FNC1_NONE); 

     // Set the processTilde property to true, if you want use the tilde 
     // character "~" to specify special characters in the input data. 
     // Default is false. 
     // 1-byte character: ~ddd (character value from 0 ~ 255) 
     // ASCII (with EXT): from ~000 to ~255 
     // 2-byte character: ~6ddddd (character value from 0 ~ 65535) 
     // Unicode: from ~600000 to ~665535 
     // ECI: from ~7000000 to ~7999999 
     // SJIS: from ~9ddddd (Shift JIS 0x8140 ~ 0x9FFC and 0xE040 ~ 0xEBBF) 
     barcode.setProcessTilde(false); 

     // unit of measure for X, Y, LeftMargin, RightMargin, TopMargin, 
     // BottomMargin 
     barcode.setUom(IBarcode.UOM_PIXEL); 
     // barcode module width in pixel 
     barcode.setX(3f); 

     barcode.setLeftMargin(50f); 
     barcode.setRightMargin(50f); 
     barcode.setTopMargin(50f); 
     barcode.setBottomMargin(50f); 
     // barcode image resolution in dpi 
     barcode.setResolution(72); 

     // barcode bar color and background color in Android device 
     barcode.setForeColor(AndroidColor.black); 
     barcode.setBackColor(AndroidColor.white); 

     /* 
     * specify your barcode drawing area 
     */ 
     RectF bounds = new RectF(0, 0, 0, 0); 
     barcode.drawBarcode(canvas, bounds); 
    } 

} 

с помощью этого я в состоянии генерировать штрих-код:как отобразить Canvas в текущем виде активности изображения в андроиде

Это мой код:

Imageview img; 
@Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if (v.getId() == R.id.textView3) { 
      AndroidBarcodeView view = new AndroidBarcodeView(
        StudentManinPage.this); 
      setContentView(view); 
     } 

    } 

, где я должен отобразить штрих-код на Imageview Но когда я нажимаю на создание штрих-кода, тогда он отображает штрих-код, но он не отображается в текущем режиме просмотра изображения, который отображается в другом представлении, пожалуйста, помогите мне отобразить текущую активность в режиме просмотра изображений. У меня есть img-изображение.

+0

RectF границы = новый RectF (0, 0, 0, 0); попробуйте дать реальный размер для этого. RectF bounds = new RectF (0, 0, canvas.getWidth(), canvas.getHeight()); И убедитесь, что ваш ImageView не имеет нулевого размера. –

+0

этот код мы должны ввести Actvity na? и как отобразить его в imageview, пожалуйста, Edid мой код, так что ic implemnt – user1531170

+0

@ user1531179 эта строка кода находится в вашем методе testQRCode. И вы должны заменить эту строку. –

ответ

0

Я не буду писать для вас код. Это просто ответ на ваш вопрос:

Найти и заменить RectF bounds = new RectF(0, 0, 0, 0); с RectF bounds = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());


public class AndroidBarcodeView extends ImageView { 
    //... 
    private static void testQRCode(Canvas canvas) throws Exception { 
     //... 
     RectF bounds = new RectF(0, 0, canvas.getWidth(), canvas.getHeight()); 
     barcode.drawBarcode(canvas, bounds); 
    } 
} 

public class StudentManinPage extends Activity { 
    //... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     AndroidBarcodeView bar_code_view = new AndroidBarcodeView(this); 
     bar_code_view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

     setContentView(bar_code_view); 
     //... 
    } 
    //... 
} 
+0

Но все же я не могу отобразить этот штрих-код в Imageview – user1531170

Смежные вопросы