2011-12-01 165 views
0

我想要一个屏幕闪烁功能,即在我的项目中闪烁。我跟着这个问题链接在stackoverflow Adding screen brightness controls to android application以编程方式闪烁屏幕

我应用由fiXedd给出的代码在那里。它的工作原理我的意思是,当状态为真时,我闪烁且代码正在工作,但接着说状态是错误的(即我想停止闪烁并恢复旧的亮度),然后我的整个屏幕变黑。然后我必须按回退出应用程序。

什么是更好的方式做屏幕闪烁,然后基于条件停止它? 谢谢。

回答

0

首先,你需要将屏幕的亮度存储在某个变量 例如闪烁之前漂浮

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

当状态为假将该值设置为窗口的布局。

请参阅下面的代码,它的工作方式完全相同。 如果没有闪现在大屏幕则clickin上的按钮会闪烁,反之亦然,当你再次

示例代码单击

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); 
    } 
} 
+0

不工作。我正在处理器线程上重复执行屏幕闪烁动画。当我恢复它不起作用。屏幕变黑。 –