Создание слушателя onRotate () - PullRequest
2 голосов
/ 17 августа 2011

Я пытался найти слушателя, который может выполнить seekmark.markPlace ().Функция принимает размеры и отступы для seekBar, определенного в моем макете.Когда я вызываю функцию из onCreate, она возвращает 0 для значений seekBar.Мне нужен слушатель, который может вызывать функцию вне onCreate.Функция должна запускаться только при повороте экрана (при создании макета).

    public class seekMark {
    private int seekLength;     // in pixels 
    private int seekLeftPad;    // in pixels
    private int seekBottomPad;  // in pixels
    private int trackLength;    // in ms

    public seekMark(){
        seekLength = progressBar.getWidth();
        seekLeftPad = progressBar.getPaddingLeft();
        seekBottomPad = progressBar.getPaddingBottom();
        trackLength = player.getDuration();
    }

    private int pxPerMs(){
        return (seekLength/trackLength);
    }

    public void markPlace() throws XmlPullParserException, IOException {
        Drawable marker = context.getResources().getDrawable(R.drawable.audio);
        int y = seekBottomPad;
        int x = 0;
        int w = marker.getIntrinsicWidth();
        int h = marker.getIntrinsicHeight();
        int[] bmPos = markPxList(); // returns a list of px (from the left) read from a xml database

        for(int i = 0; i <= bmPos.length; i++){
            x = bmPos[i] + seekLeftPad;
            marker.setBounds( x, y, x + w, y + h );
            marker.draw( canvas );
        }

    }

}

Можно ли сделать свой собственный слушатель, например, onRotate () или что-то в этом роде?

1 Ответ

0 голосов
/ 17 августа 2011

Так как onCreate будет вызываться при любом повороте устройства, почему бы просто не использовать личную переменную для хранения ориентации дисплея. Каждый раз, когда вызывается onCreate (), вы можете сравнить, чтобы увидеть, изменилась ли ориентация экрана:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();

if(rotation != mPreviousRotation) {
    mPreviousRotation = rotation;

    // Insert code for handling rotation here
}

Я оставлю вам решать, как обрабатывать инициализацию переменной mPreviousRotation во время первого вызова onCreate ().

...