2011-09-30 6 views
7

Android SeekBar에서는 일반적으로 엄지 손가락을 왼쪽이나 오른쪽으로 드래그 할 수 있으며 노란색 진행 색상은 엄지 손가락의 왼쪽에 있습니다. 엄밀히 말하면, 엄지 오른쪽에 노란색 진행 색상을 대칭 이동하고 y 축에 전체 SeekBar를 뒤집기를 원합니다.Android SeekBar가 가로로 뒤집습니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 감사!

답변

19

몇 가지 코드를 둘러 보면서 이것이 나왔습니다. 꽤 잘 작동하는 것 같습니다. 다행히 앞으로 다른 사람을 도울 것입니다.

public class ReversedSeekBar extends SeekBar { 

    public ReversedSeekBar(Context context) { 
     super(context); 
    } 

    public ReversedSeekBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ReversedSeekBar(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     float px = this.getWidth()/2.0f; 
     float py = this.getHeight()/2.0f; 

     canvas.scale(-1, 1, px, py); 

     super.onDraw(canvas); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     event.setLocation(this.getWidth() - event.getX(), event.getY()); 

     return super.onTouchEvent(event); 
    } 
} 

이 두 질문의 도움으로 함께 던져졌다 :

  1. How can you display upside down text with a textview in Android?
  2. How can I get a working vertical SeekBar in Android?
2

당신이 (180) seekbar.setRotation를 시도? 그것은 seekbar를 180도 뒤집어 놓고 거꾸로되어 있습니다. 즉, 왼쪽이 최대이고, 오른쪽이 엄지 오른쪽에있는 색상이 0입니다. 이런 식으로 사용자 정의 검색 바를 만들 필요가 없습니다.

+2

SeekBar가 시각적으로 거꾸로 된 것을 제외하고는. – mhenry

+0

기본 검색 바가 위쪽과 아래쪽에서 동일하게 보이므로 그다지 차이가 ​​없을 것입니다. 적어도 테스트 결과에는 차이가 없습니다. – DanLBan

+1

OEM이 기본 SeekBar보기의 모양을 변경할 수 있으므로 SeeBark가 거꾸로 보일 것이라고 가정 할 수 없습니다. 간단한 그래디언트를 추가하면 눈에 띄지 않게됩니다. 필자의 대답처럼 onDraw() 및 onTouchEvent() 이벤트를 프로그래밍 방식으로 재정의하는 것이 훨씬 더 좋습니다. – mhenry

관련 문제