2012-06-19 81 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