2012-03-31 2 views
0
static Boolean[][] squares = new Boolean[32][32]; 
static BitmapFactory.Options opts = new BitmapFactory.Options(); 

public static Boolean[][] getFrame(int id){ 

opts.inPreferredConfig = Bitmap.Config.ALPHA_8; 
opts.outHeight = 32; 
opts.outWidth = 32; 

Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.raw.f11, opts); 

for (int y = 0; y < 32; y++) { 
    for (int x = 0; x < 32; x++) { 
     int pixel = bmp.getPixel(x, y); 

     if(pixel == -1) 
      squares[x][y] = false; 
     else 
      squares[x][y] = true; 

     } 
} 
return squares; 
} 

여기에 문제가있어, bitmap factory가 내 비트 맵을 올바르게 가져 오지 않는 것 같습니다. 여기에 the original의 모양이 있으며 여기에 what getPixel (및 getPixels)이 나를 돌려줍니다. 이것은 선언 된 옵션이 있거나없는 경우에 발생합니다. 왜 2 배 해상도로 2 배의 그림을 가져 오는 것 같아요. 나는 1 비트와 4 비트 비트 맵을 시도했으며, 1 비트와 4 비트 비트 맵을 선언했다. 설정. 부울 배열 데이터를 사용하여 캔바스의 격자에 사각형을 그립니다. 미리 감사드립니다.이상한 비트 맵 공장 동작 (안드로이드)

답변

0

화면에 나타났습니다. 그렇다면 ImageView의 XML은 무엇입니까? 부주의 한 실수 나 너비 설정?

+0

아를 시도 할 것이다, 그것은을 사용하여 캔버스에 사각형의 32 X 32 그리드를 표시 데이터의 부울 배열입니다. 빈 사각형입니다. 이것은 화면 크기와 무관합니다. 나에게 이러한 이상한 가치를주는 getPixel 문제가있다. – Dennis

0

늦은 해답이 될 수 있지만 내가이이 부분을 언급 사용자 정의 가상 화면의 정렬을 수행해야

opts.inScaled = false;