안드로이드 dim 처리 - andeuloideu dim cheoli

07 Aug 2019 in Devstory on Android, Ui, Dim, Statusbar, Navigationbar, Systembar, Systemui, Visibility

Dim The System Bars

StatusBarNavigationBar 를 dimmed 처리 할 수 있는 방안에 대해서 다룹니다. Android 4.0 (API 14) 이상에서 동작하며, 이전 버전에서는 dimmed 할 수 있는 빌트인된 API를 제공하지는 않습니다.

아래 API를 사용해서 System Bar를 dimmed 되게 처리할 수 있습니다. 사용자가 해당 bar를 터치하면, dimmed 처리가 사라지고 완전하게 보여지게 됩니다.

다시 system bars의 dimmed 처리를 원한다면 아래 메소드를 재호출해주어야합니다.

Dim the system bars

SYSTEM_UI_FLAG_LOW_PROFILE 플래그를 사용하면, SystemBar의 Dimmed 처리를 할 수 있습니다.

// DecorView 뿐만 아니라, 보여지는 다른 View들에도 적용가능합니다.
activity?.window?.decorView?.apply {
    systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE
}

Undim the system bars programmatically

만약 코드상으로 undimmed 처리를 원한다면 다음과 같이 호출해줍니다.

// DecorView 뿐만 아니라, 보여지는 다른 View들에도 적용가능합니다.
activity?.window?.decorView?.apply {
    systemUiVisibility = 0
}

어플 개발

안드로이드 Transparency(투명) 및 Dim(희미하게) 처리 방법

출처 : http://www.androidcompetencycenter.com/2009/10/

안드로이드 Transparency(투명) Dim(희미하게) 처리 방법

Hello coders,

Lets look at a fairly simple example of creating a transparent theme and how to apply it to a Dialog……

Step 1> Create a colors.xml file in the ‘values’ folder under ‘res’ and add the following line..

<drawable name="transparent">#00000000</drawable>

Step 2> Create a styles.xml file in the ‘values’ folder under ‘res’ and the following lines…

<style name="Transparent">

<item name="android:windowIsTranslucent">true</item>

<item name="android:windowAnimationStyle">

@android:style/Animation.Translucent

</item>

<item name="android:windowBackground">@drawable/transparent</item>

<item name="android:windowNoTitle">true</item>

<item name="android:colorForeground">#fff</item>

</style>

( I guess the tags and attributes are self explanatory …. )

Step 3> Actually thats it……………………

Let’s add this to a dialog…..

Step 4> Create a class with the following lines……

public class DialogBox extends Dialog {

    public DialogBox(Context context, int theme) {

        super(context, theme);

        setContentView(R.layout.dialog);

        okButton = (Button) findViewById(R.id.dialog_OkButton);

        setListeners();

    }

}

(Make sure you create a layout for the dialog )

Step 5> Next create an activity class as follows….

public class T_Temp extends Activity {

    private DialogBox dialog;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        dialog = new DialogBox(this, R.style.Transparent);

        dialog.show();

    }

}

When creating the dialog just add the transparent theme ……

Step 6> That’s it …

( don’t forget to add the activity in the android manifest file..)

When you add the widgets and background it will look something like this..

Before

 

안드로이드 dim 처리 - andeuloideu dim cheoli

After

안드로이드 dim 처리 - andeuloideu dim cheoli
 

Step 7> Another trick is you can make the background blurred ….

just add the following line in the dialog box…

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

Output looks somthing like this…….

안드로이드 dim 처리 - andeuloideu dim cheoli
 

So the final code is:

public class DialogBox extends Dialog {

    public DialogBox(Context context, int theme) {

        super(context, theme);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

        setContentView(R.layout.dialog);

        okButton = (Button) findViewById(R.id.dialog_OkButton);

        setListeners();

    }

}