안녕하세요.
리스트 목록을 ViewFlipper 를 이용하여 차례대로 보여주고 싶어 아래와 깉이 코딩하였습니다.
view를 11개 생성하고 차례대로 목록을 만들어주는..
실행은 됩니다.
문제는 메모리에 부하가 걸리네요.. 너무 느리고..
ViewFlipper 를 사용할순 없는걸까요? ㅠㅠ
ViewFlipper flipper;
GestureDetector detector;
LayoutInflater li;
View view1, view2, view3, view4, view5, view6, view7, view8, view9, view10, view11;
public void rank_flipper() {
detector = new GestureDetector(new MyGestureDetector());
flipper = new ViewFlipper(act);
li = LayoutInflater.from(act);
view1 = li.inflate(R.layout.rankmain, null);
view2 = li.inflate(R.layout.rankmain, null);
view3 = li.inflate(R.layout.rankmain, null);
view4 = li.inflate(R.layout.rankmain, null);
view5 = li.inflate(R.layout.rankmain, null);
view6 = li.inflate(R.layout.rankmain, null);
view7 = li.inflate(R.layout.rankmain, null);
view8 = li.inflate(R.layout.rankmain, null);
view9 = li.inflate(R.layout.rankmain, null);
view10 = li.inflate(R.layout.rankmain, null);
view11 = li.inflate(R.layout.rankmain, null);
getDataList("0", view1); //리스트 만들어주는 곳
view1.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("1", view2);
view2.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("2", view3);
view3.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("3", view4);
view4.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("4", view5);
view5.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("5", view6);
view6.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("6", view7);
view7.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("7", view8);
view8.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("8", view9);
view9.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("9", view10);
view10.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
getDataList("A", view11);
view11.findViewById(R.id.ranklistview).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
detector.onTouchEvent(event);
return false;
}
});
flipper.addView(view1);
flipper.addView(view2);
flipper.addView(view3);
flipper.addView(view4);
flipper.addView(view5);
flipper.addView(view6);
flipper.addView(view7);
flipper.addView(view8);
flipper.addView(view9);
flipper.addView(view10);
flipper.addView(view11);
LinearLayout ac = (LinearLayout)act.findViewById(R.id.rank_flipper);
ac.addView(flipper);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(Math.abs(velocityX) > Math.abs(velocityY))
{
//int count = flipper.getDisplayedChild();
if(velocityX > 0)
{
flipper.setInAnimation(AnimationUtils.loadAnimation(act.getApplicationContext(), R.anim.push_right_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(act.getApplicationContext(), R.anim.push_right_out));
flipper.showPrevious();
}
else if(velocityX < 0)
{
flipper.setInAnimation(AnimationUtils.loadAnimation(act.getApplicationContext(), R.anim.push_left_in));
flipper.setOutAnimation(AnimationUtils.loadAnimation(act.getApplicationContext(), R.anim.push_left_out));
flipper.showNext();
}
return true;
}
return false;
}
}
로그켓 내용
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10-04 19:10:38.041: INFO/InputReader(2695): dispatchTouch::touch event's action is 0
10-04 19:10:38.041: INFO/InputDispatcher(2695): Delivering touch to current input target: action: 0, channel '40abd308 com.albamon.AMAS/com.albamon.AMAS.AMAS (server)'
10-04 19:10:38.150: INFO/InputReader(2695): dispatchTouch::touch event's action is 1
10-04 19:10:38.150: INFO/InputDispatcher(2695): Delivering touch to current input target: action: 1, channel '40abd308 com.albamon.AMAS/com.albamon.AMAS.AMAS (server)'
10-04 19:10:38.615: DEBUG/dalvikvm(8405): GC_CONCURRENT freed 5239K, 38% free 25656K/40903K, external 8160K/10190K, paused 1ms+7ms
10-04 19:10:38.975: DEBUG/dalvikvm(29539): GC_EXPLICIT freed 2K, 50% free 3394K/6727K, external 0K/0K, paused 290ms
10-04 19:10:39.195: DEBUG/dalvikvm(8405): GC_CONCURRENT freed 672K, 34% free 27031K/40903K, external 7710K/9628K, paused 1ms+7ms
10-04 19:10:39.765: DEBUG/dalvikvm(8405): GC_CONCURRENT freed 681K, 31% free 28397K/40903K, external 7485K/9347K, paused 2ms+7ms
10-04 19:10:40.345: DEBUG/dalvikvm(8405): GC_CONCURRENT freed 679K, 28% free 29766K/40903K, external 7372K/9207K, paused 1ms+7ms
10-04 19:10:43.790: DEBUG/dalvikvm(3791): GC_EXPLICIT freed 6K, 50% free 3448K/6855K, external 0K/512K, paused 96ms
10-04 19:10:43.850: DEBUG/BatteryService(2695): update start
10-04 19:10:43.850: DEBUG/BatteryService(2695): CHARGER :: mBatteryStatus = 5
10-04 19:10:43.850: DEBUG/BatteryService(2695): updateBattery level:100 scale:100 status:5 health:2 present:true voltage: 4191 temperature: 240 technology: Li-ion AC powered:false USB powered:true icon:17302209
이런경우 ListView와 같은 형태의 접근이 필요합니다.
ViewSwitcher를 사용하세요 사용법은 ApiDemos에 있으니까 참고하시구요