Заказчик
Отзывы фрилансеров:
+ 4
- 0
Зарегистрирован на сайте 9 лет и 3 месяца
Бюджет:
по договоренности
Заходим в программу, кликаем на инпут появляется клавиатура. Нажимаем "Назад" клавиатура скрывается и срабатывает функция 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'}
Разделы:
Опубликован:
10.01.2016 | 19:22 [последние изменения: 10.01.2016 | 22:52]