Подключите нашего Telegram-бота для уведомлений о новых проектах
Android webview
Разместить заказ
N
Заказчик
Отзывы фрилансеров:
+ 4
- 0
Зарегистрирован на сайте 9 лет и 7 месяцев
Бюджет:
по договоренности
Заходим в программу, кликаем на инпут – появляется клавиатура. Нажимаем "Назад" – клавиатура скрывается и срабатывает функция run(). Это нормально. Но если мы нажимаем "Домой" или кнопку питания или у нас входящий звонок – тоже срабатывает run() – это нужно исключить. Думаю нужно поставить дополнительное условие – "Если активити не активна – функция run() не срабатывает" Перечисление событий звонка, нажатия кнопок не допустимо.
Код активити:
package com.comname.reminder_4_4;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView vw = (WebView) findViewById(R.id.webView);
vw.getSettings().setJavaScriptEnabled(true); // включили JavaScript
vw.loadUrl("file:///android_asset/index.html");
final View activityRootView = findViewById(R.id.webView); // получаем ID лайота (нужно указать)
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { // ставим "прослушку" на лайот
private int lastHeight;// предыдущее значение высоты
@Override
public void onGlobalLayout() {
if (lastHeight == 0) { // если не определено, то определить (1-ый вызов метода)
lastHeight = activityRootView.getHeight();
}
// проверка на то, что предыдущее значение меньше текущего
// если разница более 100, то значит, была закрыта клавиатура
if (lastHeight <> 100) {
WebView vw = (WebView) findViewById(R.id.webView);
vw.loadUrl("javascript:run()");
}
lastHeight = activityRootView.getHeight(); // установка предыдущего значения
}
});
private static long back_pressed;
public void onBackPressed() {
if (back_pressed + 2000 > System.currentTimeMillis())
super.onBackPressed();
else
Toast.makeText(getBaseContext(), "Для выхода нажмите еще раз",
Toast.LENGTH_SHORT).show();
back_pressed = System.currentTimeMillis();
}
}
Код index.html:
<input type="text">
<div id="test"></div>
<script type="text/javascript" src="js.js"></script>
Код js.js:
function run (){ document.querySelector('#test').innerText = 'hello'}
Код активити:
package com.comname.reminder_4_4;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import java.io.IOException;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView vw = (WebView) findViewById(R.id.webView);
vw.getSettings().setJavaScriptEnabled(true); // включили JavaScript
vw.loadUrl("file:///android_asset/index.html");
final View activityRootView = findViewById(R.id.webView); // получаем ID лайота (нужно указать)
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { // ставим "прослушку" на лайот
private int lastHeight;// предыдущее значение высоты
@Override
public void onGlobalLayout() {
if (lastHeight == 0) { // если не определено, то определить (1-ый вызов метода)
lastHeight = activityRootView.getHeight();
}
// проверка на то, что предыдущее значение меньше текущего
// если разница более 100, то значит, была закрыта клавиатура
if (lastHeight <> 100) {
WebView vw = (WebView) findViewById(R.id.webView);
vw.loadUrl("javascript:run()");
}
lastHeight = activityRootView.getHeight(); // установка предыдущего значения
}
});
private static long back_pressed;
public void onBackPressed() {
if (back_pressed + 2000 > System.currentTimeMillis())
super.onBackPressed();
else
Toast.makeText(getBaseContext(), "Для выхода нажмите еще раз",
Toast.LENGTH_SHORT).show();
back_pressed = System.currentTimeMillis();
}
}
Код index.html:
<input type="text">
<div id="test"></div>
<script type="text/javascript" src="js.js"></script>
Код js.js:
function run (){ document.querySelector('#test').innerText = 'hello'}
Разделы:
Опубликован:
10.01.2016 | 19:22 [последние изменения: 10.01.2016 | 22:52]