|
|
| Zeile 9: |
Zeile 9: |
| | == Views == | | == Views == |
| | === Vertical Seek Bar === | | === Vertical Seek Bar === |
| − | http://stackoverflow.com/questions/4892179/how-can-i-get-a-working-vertical-seekbar-in-android (2013-02)
| + | [[Android - Vertical Seek Bar]] |
| − | | |
| − | Siehe auch die Kommentare wg. Verbesserungen und Problembehebungen
| |
| − | | |
| − | <pre>
| |
| − | package android.widget;
| |
| − | | |
| − | import android.content.Context;
| |
| − | import android.graphics.Canvas;
| |
| − | import android.util.AttributeSet;
| |
| − | import android.view.MotionEvent;
| |
| − | | |
| − | public class VerticalSeekBar extends SeekBar {
| |
| − | | |
| − | public VerticalSeekBar(Context context) {
| |
| − | super(context);
| |
| − | }
| |
| − | | |
| − | public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
| |
| − | super(context, attrs, defStyle);
| |
| − | }
| |
| − | | |
| − | public VerticalSeekBar(Context context, AttributeSet attrs) {
| |
| − | super(context, attrs);
| |
| − | }
| |
| − | | |
| − | protected void onSizeChanged(int w, int h, int oldw, int oldh) {
| |
| − | super.onSizeChanged(h, w, oldh, oldw);
| |
| − | }
| |
| − | | |
| − | @Override
| |
| − | protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
| |
| − | super.onMeasure(heightMeasureSpec, widthMeasureSpec);
| |
| − | setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
| |
| − | }
| |
| − | | |
| − | protected void onDraw(Canvas c) {
| |
| − | c.rotate(-90);
| |
| − | c.translate(-getHeight(), 0);
| |
| − | | |
| − | super.onDraw(c);
| |
| − | }
| |
| − | | |
| − | @Override
| |
| − | public boolean onTouchEvent(MotionEvent event) {
| |
| − | if (!isEnabled()) {
| |
| − | return false;
| |
| − | }
| |
| − | | |
| − | switch (event.getAction()) {
| |
| − | case MotionEvent.ACTION_DOWN:
| |
| − | case MotionEvent.ACTION_MOVE:
| |
| − | case MotionEvent.ACTION_UP:
| |
| − | setProgress(getMax() - (int) (getMax() * event.getY() / getHeight()));
| |
| − | onSizeChanged(getWidth(), getHeight(), 0, 0);
| |
| − | break;
| |
| − | | |
| − | case MotionEvent.ACTION_CANCEL:
| |
| − | break;
| |
| − | }
| |
| − | return true;
| |
| − | }
| |
| − | }
| |
| − | </pre>
| |
| − | | |
| − | Implementation
| |
| − | To implement it, create a new class in your project, choosing the right package: android.widget
| |
| − | | |
| − | xml Layout
| |
| − | <pre>
| |
| − | | |
| − | <android.widget.VerticalSeekBar
| |
| − | android:id="@+id/seekBar1"
| |
| − | android:layout_width="wrap_content"
| |
| − | android:layout_height="200dp"
| |
| − | />
| |
| − | </pre>
| |
| | | | |
| | == Events == | | == Events == |