1

Okey 배경에 대한 그림 설정에 문제가 있습니다. 처음에는 'properities'상자에서 배경을 설정했습니다. .jpg 파일을 내 드로어 블 폴더에 복사 한 다음 배경을 properities 상자에서 적합성을 클릭 한 다음 리소스 폴더에서 파일을 선택하십시오. 그게 오케이 였고 그때는 효과가 있었지만 배경을 흐리게 만들고 싶었습니다. 그리고 그걸 쓴 클래스를 찾았습니다. BlurBuilder 그리고 그 클래스를 제 프로젝트에 넣었습니다. 모든이 시점에 좋아요, 나는 클래스를 추가하지만 난 그 클래스에서 funciton을 적용하려고 할 때 그와 같은 예와 같이Android에서 setBackgroungDrawable 함수로 배경 설정

Bitmap blurredBitmap = BlurBuilder.blur(MainActivity.this,myBackgroundFile); 
    view.setBackgroundDrawable(new BitmapDrawable(getResources(), blurredBitmap)); 

편집기 보기 ''기호를 확인할 수 없습니다 '라고. 두 번째 줄을 변경하기 위해 tryied;

View.setBackgroundDrawable(new BitmapDrawable(getResources(), blurredBitmap)); 

하지만 이번에 안드로이드 스튜디오 를 말한다 '비 정적 메서드'setBackgroudDrawable (android.graphic.drawables.Drawable)는 정적 컨텍스트에서 참조 할 수 없습니다

여기 내가 사용하는 BlurBuilder 클래스입니다 :

public class BlurBuilder { 
private static final float BITMAP_SCALE = 0.4f; 
private static final float BLUR_RADIUS = 7.5f; 

public static Bitmap blur(Context context, Bitmap image) { 
    int width = Math.round(image.getWidth() * BITMAP_SCALE); 
    int height = Math.round(image.getHeight() * BITMAP_SCALE); 

    Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false); 
    Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap); 

    RenderScript rs = RenderScript.create(context); 
    ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); 
    Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap); 
    Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap); 
    theIntrinsic.setRadius(BLUR_RADIUS); 
    theIntrinsic.setInput(tmpIn); 
    theIntrinsic.forEach(tmpOut); 
    tmpOut.copyTo(outputBitmap); 

    return outputBitmap; 
}} 

미리 감사드립니다.

길잡이 : 내 활동의 배경을 흐릿한 이미지로 만들고 싶습니다.

+0

저는 ImageView 변수 이름이 view입니까? – sumandas

+0

아니야. 방금 안드로이드 프로그래밍을 시작했습니다. 그래서 나는 예제에서 복사 한 그대로 그대로두고 있습니다. 나는 그것을 바꾸어야한다는 것을 알고 있지만 정확히 무엇을 해야할지 모르겠습니다. 어떻게 바꾸어야합니까? 그리고 전체 레이아웃을위한 그림을 설정하려고합니다. –

답변

1

당신은 예를 들어, 일부보기의 인스턴스를 생성해야한다는 말을 의미 비 정적 컨텍스트에서 비 정적 기능 즉 setDrawableBackground 전화 :

ImageView view = (ImageView) findViewById(R.id.imageview1);  
Bitmap blurredBitmap = BlurBuilder.blur(MainActivity.this,myBackgroundFile); 
view.setBackgroundDrawable(new BitmapDrawable(getResources(), blurredBitmap)); 

일단 지금 할 당신이를 호출 할 수 있습니다 view가 지원하는 기능.

<ImageView 
     android:id="@+id/whole_background" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/android" /> 

거기에 [주요 활동] 다음을 추가 :이 스케일을 강제

+0

설명해 주셔서 감사합니다. 하지만 ImageView가 아닌 ​​전체 레이아웃의 배경으로 그림을 설정하려고합니다. 어떻게해야합니까? –

+0

레이아웃이 전체 화면을 채우고 있습니까? –

+0

보기마다보기가 필요하지 않습니다. 레이아웃에서 동일한 setBackgroundDrawable을 호출 할 수 있습니다! –

1

다음과 같은 XML에서 (main_activity.xml를 또는 무엇 이건 당신의 파일) 추가 알았어요 이미지를 사용하여 화면 크기를 표시하고 전체 디스플레이를 사용하여 이미지를 표시하십시오.

/* where you set the activity */ 
    setContentView(R.layout.your_main_activity); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 


    /* adapt the image to the size of the display */ 
    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    Bitmap blurredBitmap = BlurBuilder.blur(MainActivity.this,myBackgroundFile); 
    Bitmap bmp = Bitmap.createScaledBitmap(blurredBitmap,size.x,size.y,true); 

    /* fill the background ImageView with the resized image */ 
    ImageView iv_background = (ImageView) findViewById(R.id.whole_background); 
    iv_background.setImageBitmap(bmp); 
+0

고맙습니다. 시도해 보 겠지만, ImageView는 레이아웃의 다른 모든 요소를 ​​사라지게 할 것입니다. –

+0

정확하지 않음. :) AppCompactActivity를 사용하고 FloatingActionButton을 사용하는 경우에는 그렇지 않습니다. 사용 사례가 확실하지 않으므로 이미지가 흐리게 보이고 레이아웃 배경에 이미지를 설정하여 나머지보기가 동일하게 유지할 수 있습니다. – sumandas