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刚刚重新查看并放置一些文本而不是“finish()”并且活动正常运行......但我认为完成必须在那里: / 也许您有任何建议如何“重置”屏幕?看起来我理解错误的教程之一......

//EDIT2:嗯......我不能在前 8 小时内发布我自己的问题的答案:D 所以我把它贴在这里:

谢谢大家的帮助和提示,但现在我为自己找到了解决方案:D 这个:从小部件刷新显示? “启动一个空活动并执行 WindowManager 刷新”部分对我有用。我在问这里之前遇到了这个问题,但当时我只是无法让它工作:D 所以,无论如何,非常感谢你;)这只是一个例子,它可以是很难编写“一个小的,快速编码的初学者应用程序” ;)

4

2 回答 2

0

您可能还需要考虑在您的视图上调用 invalidate() 而不是启动和关闭一个新视图。

我不确定它是否适用于这种情况,因为我没有尝试更改屏幕亮度。但是,根据http://developer.android.com/reference/android/view/View.html#invalidate (),在视图上调用 invalidate() 将导致 onDraw() 被调用,这听起来像你想要的.

于 2012-06-19T21:30:49.823 回答
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 {

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

button1 = (Button) findViewById(R.id.activity);
button1.setOnClickListener(this);
于 2012-06-19T21:32:56.280 回答