2012-06-19 24 views
2

我最近开始的Android编码和想改变屏幕亮度创建一个小程序... 嗯..我知道已经有一些关于它的问题,但我想这里的一切建议,真的不知道我怎么能解决我的问题:) 我知道你必须在设置亮度后“刷新”屏幕。在这一点上,我的问题开始了......我创建了一些虚拟活动,并且在我的主要活动中也有一个意图,但好像意图不打开虚拟活动......这里有我主要的相关部分活性:启动虚工作

button1.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Settings.System.putInt(getContentResolver(), 
      Settings.System.SCREEN_BRIGHTNESS, 255); 

      Intent in = new Intent(Test.this,DummyBrightnessActivity.class); //it is working... 
      startActivity(in); //it is working... 
     } 

和伪代码:

public class DummyBrightnessActivity extends Activity{ 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    this.finish(); 

} 

}

所述的manifest.xml:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".Test" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.Test.DummyBrightnessActivity" 
     android:taskAffinity="com.Test.Dummy" 
     android:excludeFromRecents="true" 
     android:theme="@style/EmptyActivity"></activity> 
</application> 

也许相关的styles.xml:

<resources> 

<style name="EmptyActivity" parent="android:Theme.Dialog"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Toast</item> 
    <item name="android:background">#00000000</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:colorForeground">#000</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    <item name="android:windowIsFloating">true</item> 
</style> 


</resources> 

哦,顺便说一句...我没有得到任何错误...哑只是不会开始(我是这么认为的,因为当我没有Android运行:excludeFromRecents =“true”,那么它不会出现在最近的应用程序列表中。

我希望有人能帮助我... 有一个愉快的一天

//编辑:嗯......它看起来像代码工作正常的xD 只是relooked并把一些文字来代替“完成()“和活动正常运行......但我认为完成必须在那里:/ 也许你有什么建议如何”重置“屏幕呢?貌似我理解错的教程之一...

// EDIT2: 嗯......我不能发布一个答案,在第一8小时我自己的问题:d 所以我将它张贴在这里:

谢谢大家的帮助和提示,但是现在我发现了我自己的解决方案:D 这一个:Refreshing the display from a widget? “开启一个空活动并执行WindowManager刷新”部分正在为我工​​作。 我碰到这个问这里之前,但当时我只是不可能得到它的工作:d 所以,不管怎么说,非常感谢你;) 这只是艰苦的一个例子也可以是代码“一点,快-coded初学者应用”;)

+0

我没有答案,但因为你看起来像我想我会在免得给你一个替代资源的HTTP新用户:/ /android.stackexchange.com/ – wavedrop

回答

0

您可能还需要考虑您查看调用无效()代替的开始和结束的一个新的。

我不知道它是否会为这种情况下工作,因为我还没有尝试过改变屏幕亮度。但是,根据http://developer.android.com/reference/android/view/View.html#invalidate(),在视图上调用invalidate()将导致调用onDraw(),这听起来像你想要的。

+0

嗯...听起来有趣..但我没有得到如何实现这... 我不能让它与OnClickListener一起工作..也许你有任何代码示例? :) – user1467583

+0

假设你的主视图是'R.id.main'。 您可以调用'findViewById(R.id.main).invalidate()'使该视图无效,并强制该视图调用onDraw()。 –

+0

嗯...是的......这是有道理的......:D 会试试看...希望它有效..看起来像一个非常简单的解决方案... – user1467583

0

我认为这应该工作。当我从一个页面移动到另一个页面时,我使用它。它只是识别课程并开始活动,运行您的新活动即将开展的任何活动。

public void onClick(View v) { 
    // (IN THIS EXAMPLE) IDENTIFIES WHAT IS BEING PRESSED 
    if(v.getId() == R.id.activity) { 
     // STARTS THE OTHER ACTIVITY 
     Intent i = new Intent(this,Activity2.class); 
     this.startActivity(i); 
    } 

此外,删除finish();因为你的活动初始化并在同一时间关闭。 确保您设置了内容视图(setContentView(R.layout.main);),以便您可以判断您开始的活动是否确实将您带到了您想要的页面。

编辑:你说没有检测到按钮按下。尝试直接将OnClickListener实现到您的活动中android像这样导入它。

public class MyApplication extends Activity implements OnClickListener { 

此外,请确保您的按钮已正确初始化。尝试删除这样的:button1.setOnClickListener(new OnClickListener(),然后添加到您的代码:

button1 = (Button) findViewById(R.id.activity); 
button1.setOnClickListener(this); 
+0

这甚至不认可按钮,我想。当我添加“Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,255);” 它不会更改Android的内置“亮度条”。与其他代码一样。 – user1467583

+0

更新了我的答案。 – Kurty

+0

正如我在上面编辑的问题所说的问题不是第二个活动的开始,即时通讯非常抱歉:/ 问题似乎是如何“刷新”屏幕... – user1467583