2012-06-19 9 views
2

최근 안드로이드 코딩을 시작했고 화면 밝기를 변경하기위한 작은 프로그램을 만들고 싶었습니다. 글쎄 .. 이미 그것에 대해 몇 가지 질문이 있지만, 여기에 제안 된 모든 것을 시도하고 실제로 어떻게 내 문제를 해결할 수 있습니다 :) 밝기를 설정 한 후 화면을 "새로 고침"해야한다는 것을 이해했습니다. 그리고이 시점에서 내 문제가 시작됩니다 ... 나는 어떤 종류의 모조품을 만들었고 또한 내 주요 활동에 의도가 있었지만 의도적으로 모조품을 사용하지 않는 것처럼 보입니다. 작업 :어미 활동 시작

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> 

오, BTW ... 내가 ... 더미 그냥 늘 내가 안드로이드없이 실행할 때 때문에 나는 그렇게 생각 (시작 오류를 얻을 해달라고 : excludeFromRecents = "true"이면 최근 앱 목록에 표시되지 않습니다.

나는 가 좋은 일을 가지고 ... 누군가가 나를 도울 수 있기를 바랍니다

// 편집 : 코드가 작동처럼 음 ... 그것은 본다 제대로의 xD 그냥 relooked하고 대신 텍스트를 넣어 " finish() "및 액티비티가 제대로 실행되었지만 마무리가 있어야한다고 생각했습니다./ 대신 화면을"재설정 "하는 방법이 있습니까? 내가 잘못 자습서 중 하나 ...

// EDIT2 이해 같은데 : 음 ... 내가 처음 8시간에서 내 자신의 질문에 대한 답변을 게시하지 못할 : D 그래서 내가 여기에 게시 :

모두에게 도움과 팁을 주셔서 감사합니다. 그러나 이제는 직접 해결책을 찾았습니다. D this : Refreshing the display from a widget? "빈 활동을 시작하고 WindowManager 새로 고침"부분이 저에게 효과적입니다. 여기에서 물어보기 전에이 문제가 발생했습니다.하지만 그때까지는 작동하지 못했습니다. D 이것은 매우 어렵다는 예입니다. "조금 더 빨리 -coded beginner app "))

+0

:이 제거하십시오 : button1.setOnClickListener(new OnClickListener()를 다음 코드에 이것을 추가//android.stackexchange.com/ – wavedrop

답변

0

새로운 뷰어를 시작하고 닫는 대신보기에서 invalidate()를 호출하는 것도 좋습니다.

화면 밝기를 변경하지 않았으므로이 시나리오에서 작동하는지 잘 모르겠습니다. 그러나 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 like this.

public class MyApplication extends Activity implements OnClickListener { 

또한 버튼이 제대로 초기화되었는지 확인하십시오. 당신은 내가에서 않도록, 당신에게 대체 자원 HTTP를 줄 것이라고 생각 새로운 사용자처럼 보일 때문에 나는 대답을하지 않지만

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

심지어 이것은 버튼 - 프레스를 인식하지 못합니다. "Settings.System.putInt (getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 255)를 추가하면" 안드로이드의 빌드 - 인 "Brightnessbar"를 변경하지 않습니다. 다른 코드를 사용하면됩니다. – user1467583

+0

내 대답이 업데이트되었습니다. – Kurty

+0

내가 위의 편집 된 질문에서 두 번째 활동의 시작이 아니라고 말하면서 매우 유감스럽게 생각합니다 :/ 문제는 화면을 "새로 고침"하는 방법 인 것 같습니다 ... – user1467583