SeekBarを使ってMainclassから違うクラスに値を渡したいです。
違うクラスというのが、Serviceを使っているので、Intentを使ってやるやり方がよく分かりません。
どのような方法でもよいので、教えてください。
実際は、mView.setBackgroundColor(Color.argb(+50, 0, 0, 0));
↑にSeekBarの値を入れたいです。
###ソースコード
java
1public class MainActivity extends Activity{ 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 8 9 final Intent intent = new Intent(MainActivity.this, FilterService.class); 10 final TextView tv = (TextView)findViewById(R.id.tv); 11 //final Intent i = new Intent(MainActivity.this, FilterService.class); 12 13 final SeekBar sb = (SeekBar)findViewById(R.id.seekBar); 14 sb.setOnSeekBarChangeListener( 15 new SeekBar.OnSeekBarChangeListener() { 16 public void onProgressChanged(SeekBar seekBar,int progress, boolean fromUser) { 17 // ツマミをドラッグしたときに呼ばれる 18 tv.setText("設定値:"+sb.getProgress()); 19 } 20 //つまみに触れたときに呼ばれる 21 public void onStartTrackingTouch(SeekBar seekBar) {} 22 23 //つまみを離したときに呼ばれる 24 public void onStopTrackingTouch(SeekBar seekBar) { 25 startService(intent); 26 } 27 } 28 ); 29 Button buttonAddFilter = (Button) findViewById(R.id.ButtonAddFilter); 30 buttonAddFilter.setOnClickListener(new View.OnClickListener() { 31 @Override 32 public void onClick(View v) { 33 setNotification(); 34 startService(intent); 35 } 36 }); 37 38 Button buttonRemoveFilter = (Button) findViewById(R.id.ButtonRemoveFilter); 39 buttonRemoveFilter.setOnClickListener(new View.OnClickListener() { 40 @Override 41 public void onClick(View v) { 42 cancelNotification(); 43 stopService(intent); 44 } 45 }); 46 47 }
###ソースコード
java
1public class FilterService extends Service { 2 3 4 private View mView; 5 private WindowManager mWindowManager; 6 7 8 @Override 9 public int onStartCommand(Intent intent, int flags, int startId) { 10 11 //重ねあわせするViewの設定 12 WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( 13 WindowManager.LayoutParams.MATCH_PARENT, 14 WindowManager.LayoutParams.MATCH_PARENT, 15 WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, //オーバーレイヤーに設定 16 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 17 PixelFormat.TRANSLUCENT //ウインドウの透明化 18 ); 19 20 LayoutInflater layoutInflater = LayoutInflater.from(this); 21 22 //WindowManagerを取得 23 mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 24 25 //レイアウトファイルから重ねあわせするViewを作成 26 mView = layoutInflater.inflate(R.layout.filter, null); 27 28 //透過率80の黒色のフィルターを指定 29 //パラメータは左から(透過率,R,G,B) ココをいじれば任意のフィルターに変更可能 30 mView.setBackgroundColor(Color.argb(+200, 0, 0, 0)); 31 32 //Viewを画面上に重ねあわせする 33 //mWindowManager.addView(mView, layoutParams); 34 35 return START_STICKY; 36 } 37 38 @Override 39 public void onDestroy() { 40 super.onDestroy(); 41 mWindowManager.removeView(mView); 42 } 43 44 @Nullable 45 @Override 46 public IBinder onBind(Intent intent) { 47 return null; 48 } 49 @Override 50 public void onRebind(Intent intent){} 51 52 @Override 53 public boolean onUnbind(Intent intent){ 54 //onUnbindをreturn trueでoverrideすると次回バインド時にonRebildが呼ばれる 55 return false; 56 } 57
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。