屏幕以编程方式闪烁

时间:2011-12-01 07:18:21

标签: android

我想要一个屏幕闪烁功能,即在我的项目中闪烁。我在stackoverflow Adding screen brightness controls to android application

中关注了此问题链接

我在那里应用了fiXedd给出的代码。它工作我的意思是当一个状态是真的我闪烁和代码工作,但然后说状态是假的(即我想停止闪烁和恢复旧的亮度)然后我的整个屏幕变黑。然后我必须按回去退出应用程序。

什么是更好的方式来进行屏幕闪烁,然后根据条件停止它? 感谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要在某些变量闪烁前存储屏幕亮度 示例浮动

float oldBrightNess = Settings.System.getInt(getContentResolver(), 
                 Settings.System.SCREEN_BRIGHTNESS);

并在状态为false时将此值设置为窗口布局。

请参阅以下代码,它的工作方式完全相同。 如果屏幕没有闪烁,那么当您再次单击时,单击该按钮将闪烁,反之亦然

示例代码

public class RelativeLayoutTesting extends Activity implements OnClickListener {
    Button button3;
    boolean isPLAYING;
    MediaPlayer mp;
    boolean isFlashedBefore = false;
    float oldBrightNess = 0;
    float newBrightNess = 1.0f;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample);
        button3 = (Button) findViewById(R.id.btn3);
        button3.setOnClickListener(this);
        try{
        oldBrightNess = Settings.System.getInt(getContentResolver(), 
                 Settings.System.SCREEN_BRIGHTNESS);
        }catch(Exception ex){
            ex.printStackTrace();
            oldBrightNess = 1.0f;
        }
System.out.println("...Brighness..."+oldBrightNess);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        if(!isFlashedBefore){

        lp.screenBrightness = newBrightNess;

        }else{
            lp.screenBrightness = oldBrightNess;
        }
        getWindow().setAttributes(lp);
        isFlashedBefore = !isFlashedBefore;

//      emailWOAttach(RelativeLayoutTesting.this);
    }
}