2011-02-09 2 views
0

Как прокручивать webView с жесткими клавишами громкости? ... и можно ли это сделать с ослаблением? Если да, то как? Я nooB для Android - переход от ActionScript, и любая помощь будет принята с благодарностью.Прокрутка webView с помощью клавиш регулировки громкости

my R.id.webPg001 is a WebView id. 

Это где я в настоящее время:

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     int action = event.getAction(); 
     int keyCode = event.getKeyCode(); 
     ScrollView scrollView; 
     scrollView = (ScrollView) findViewById(R.id.webPg001);   
      switch (keyCode) { 
      case KeyEvent.KEYCODE_VOLUME_UP: 
       if (action == KeyEvent.ACTION_UP) { 
        scrollView.pageScroll(ScrollView.FOCUS_UP); 
        scrollView.computeScroll(); 
       } 
       return true; 
      case KeyEvent.KEYCODE_VOLUME_DOWN: 
       if (action == KeyEvent.ACTION_UP) { 
      scrollView.pageScroll(ScrollView.FOCUS_DOWN); 
        scrollView.computeScroll(); 
       } 
       return true; 
      default: 
       return super.dispatchKeyEvent(event); 
      } 
     } 
+0

P.S. Мне нужно просмотреть прокрутку длины экрана. например: например, когда вы используете клавиши вверх/вниз на клавиатуре столешницы. Thnx – CelticParser

ответ

2

Вот правильный код: (Thnx NdrU !!)

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    int action = event.getAction(); 
    int keyCode = event.getKeyCode(); 
    WebView scrollView = (WebView) findViewById(R.id.ch01);  
     switch (keyCode) { 
     case KeyEvent.KEYCODE_VOLUME_UP: 
      if (action == KeyEvent.ACTION_DOWN) { 
       scrollView.pageUp(false); 
      } 
      return true; 
     case KeyEvent.KEYCODE_VOLUME_DOWN: 
      if (action == KeyEvent.ACTION_DOWN) { 
       scrollView.pageDown(false); 
      } 
      return true; 
     default: 
      return super.dispatchKeyEvent(event); 
     } 
    } 
1

WebView имеет методы pageUp и pageDown, в соответствии с javadoc, они прокручивать половину страницы, так что вы, вероятно, хотите, чтобы называть их в два раза чтобы получить полный список страниц.

Что касается кода, который у вас есть, я подумал, что предпочтительный способ прослушивания нажатия кнопок - это переопределить методы onKeyUp и onKeyDown, но я могу ошибаться (я новичок в разработке android).

+0

Thanx. Я изучал этот пост, но я не мог правильно его написать. В любом случае, вы можете снять мне пример? Thanx снова для вашей поддержки. – CelticParser

+0

Сначала вам нужно получить ссылку на WebView, поэтому измените две строки перед оператором switch на 'WebView scrollView = (WebView) findViewById (R.id.webPg001);', затем, удалите две строки, которые вы вызываете ' pageScroll' и 'computeScroll', и поместите' scrollView.pageUp (false); 'дважды вместо этого (или' pageDown', конечно). – NdrU

+0

THANX !! Работает красиво. Я попробовал нечто подобное, но не совсем там. Thanx для вашей помощи. Это было слишком легко (еще не 4 меня, но я поймаю LOL). – CelticParser

1

На всякий случай, о котором вы не знаете, нормальным механизмом навигации является использование клавиш со стрелками или трекбола для аппаратной навигации. Ваши веб-просмотры должны подключаться к этому механизму без каких-либо дополнительных усилий с вашей стороны, поэтому, если у вас нет четкой причины для подключения клавиш тома, я бы рекомендовал использовать встроенные функции здесь.

+0

Thnx для информации, но большинство Android-устройств больше не имеют трекбола, и у них нет «клавиш со стрелками» (кроме жестких дисков). Вы перемещаетесь по жестам. Если вы не заметили, большинство браузеров android также перемещаются вверх/вниз с помощью жестких клавиш громкости (то есть: Opera). Я разрабатываю для Galaxy Tab (он использует клавиши громкости как клавиши со стрелками). Я нашел несколько ресурсов по этому вопросу для навигации в WebView, но мне не хватает кода (I), необходимого для реализации жестких ключей. – CelticParser

Смежные вопросы