안드로이드 초보입니다.
MainActivity에서 Seekbar를 변경해서 Service로 최상위로 띄어진 View의 투명도(alpha)값을 변경하려고 합니다.
그래서 어찌어찌해서 아래와 같이 작성해서 구현은 했는데...
seekbar변경에 따라 view의 변경이 겁나게 느립니다. (0.5초이상 반응 딜레이가 발생됨)
혹시 더 좋은 방법이 있으면 초보에게 한 수 알려주시면 감사하겠습니다.
MainActivity
final Intent intent = new Intent(this, MyService.class);
seekbar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
seekbaraaa = seekbar1.getProgress();
intent.putExtra("aabbcc",seekbaraaa);
startService(intent);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Service
@Override
public void onCreate() {
super.onCreate();
LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflate.inflate(R.layout.activity_myservice, null);
eeffgg = false;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
ddeeff = intent.getIntExtra("aabbcc",0);
floatbright = (float)ddeeff / 100;
if (eeffgg == false) { //뷰 표시가 아니면...
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
params.alpha = floatbright;
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
eeffgg = true;
} else { //뷰가 표시중이면...
if(wm != null) {
if(mView != null) {
wm.removeView(mView);
mView = null;
}
wm = null;
}
LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflate.inflate(R.layout.activity_myservice, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
params.alpha = floatbright;
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
Toast.makeText(this, String.valueOf(ddeeff), Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
if(wm != null) {
if(mView != null) {
wm.removeView(mView);
mView = null;
}
wm = null;
}
}