2017-09-06 8 views
0

저는 비교적 안드로이드 개발에 익숙하며 지금까지 파편의 목적을 포착하지 않았습니다. 어쨌든, 내 앱에 로그인하는 모든 사용자에 대해 고유 한 QR 코드을 만들려고합니다. 이 QR 코드는 데이터베이스에서 검색 한 사용자 정보로 가득 찬 입니다. 지금 내가 경험하고있는 유일한 문제는 qr 코드의 생성이다. 수십 개의 자습서를 살펴 보았지만 종종 유스 케이스에 대해 무효화되거나 단순히 작동시키지 못하는 경우가 있습니다. 나는 또한 XXING api을 보았습니다. 그러나 그것은 도움이되지 못했습니다. 이 노력을 돕기 위해 StackoverFlow 커뮤니티에 물어보십시오. 모든 도움을 주실 수 있습니다.파편을 사용하여 Android 용 QR 코드 생성기를 만드는 방법

답변

0

Activity와 Fragment간에 약간의 차이가 있습니다. 둘 다 UI를 표시하는 데 사용할 수 있습니다. 조각을 사용하려면 Fragment가 항상 Activity에 포함되어야하기 때문에 Activity가 해당 호스트로 필요합니다. documentation 가입일

:

단편 행동 또는 활성 사용자 인터페이스의 일부를 나타낸다. 단일 활동에서 여러 단편을 결합하여 다중 창 UI를 작성하고 여러 활동에서 단편을 재사용 할 수 있습니다. 은 조각을 활동의 모듈 섹션으로 생각할 수 있습니다.이 섹션의 활동주기는 이며 자체 입력 이벤트를 수신하며 수행 중에는 을 추가하거나 제거 할 수 있습니다 (하위 예제 : 활동 "다른 활동에서 재사용 할 수 있음).

조각

는 항상 활동에 포함되어야하며 조각의 라이프 사이클 직접 호스트 활동의 라이프 사이클에 의해 영향을 받는다.

조각을 마스터하기 위해서는 Building a Dynamic UI with Fragments을 읽어야합니다.

  1. 호스트
  2. 활동의 레이아웃을 만듭니다로 활동을 만듭니다 단계는 조각 (주이없는 엄격한 규칙을) 만들 수 있습니다. 그 안에는 프래그먼트 홀더로 FrameLayout 뷰를 만들어야합니다.
  3. 는 조각
  4. 의 UI 레이아웃을 만들기 QR 코드 파트를 생성 지금

하여 FragmentTransaction을 사용하여 활동에 조각을 연결 조각 클래스를

  • 을 확장하여 조각을 만듭니다. QR 코드에 표시해야 할 정보를 결정해야합니다. 모든 사용자 데이터를 세계에 공개해서는 안되기 때문에 QR 코드의 모든 정보를 제공하지 마십시오. 1 개 이상의 문자열이 있으면 ";"을 사용할 수 있습니다. 또는 텍스트 정보에 참여하는 다른 것.

    QR 코드 이미지를 작성하려면 먼저 빌드에 다음 줄을 사용하여 ZXing library을 포함시켜야합니다.Gradle을는 (사용 latest version) :

    compile 'com.google.zxing:core:3.3.0' 
    

    그런 다음, 다음 코드를 사용하여 QR 코드 비트 맵을 만들 :

    private Bitmap textToImage(String text, int width, int height) throws WriterException, NullPointerException { 
        BitMatrix bitMatrix; 
        try { 
        bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.DATA_MATRIX.QR_CODE, 
            width, height, null); 
        } catch (IllegalArgumentException Illegalargumentexception) { 
        return null; 
        } 
    
        int bitMatrixWidth = bitMatrix.getWidth(); 
        int bitMatrixHeight = bitMatrix.getHeight(); 
        int[] pixels = new int[bitMatrixWidth * bitMatrixHeight]; 
    
        int colorWhite = 0xFFFFFFFF; 
        int colorBlack = 0xFF000000; 
    
        for (int y = 0; y < bitMatrixHeight; y++) { 
        int offset = y * bitMatrixWidth; 
        for (int x = 0; x < bitMatrixWidth; x++) { 
         pixels[offset + x] = bitMatrix.get(x, y) ? colorBlack : colorWhite; 
        } 
        } 
        Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444); 
    
        bitmap.setPixels(pixels, 0, width, 0, 0, bitMatrixWidth, bitMatrixHeight); 
        return bitmap; 
    } 
    

    그런 다음 당신이 당신의 조각에 이미지 뷰에 생성 된 이미지를 설정하는 데 사용할 수 있습니다 다음과 같이 입력하십시오 :

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
        View view = inflater.inflate(R.layout.your_fragment_layout, container, false); 
        ImageView imvQrCode = (ImageView) view.findViewById(R.id.your_image_view); 
    
        Bitmap bitmap = textToImage("your_text_info", 500, 500); 
        imageView.setImageBitmap(bitmap); 
    
        return view; 
    } 
    
  • +0

    효과가 있으며, 당신은 구세주입니다. 모든 도움에 감사드립니다 – saj5211

    +0

    대단히 환영합니다. 이 대답을 수락하면 질문을 닫을 수 있습니다.) –