Урок 32. Пишем простой браузер

Обсуждение уроков
Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение rezak90 » 01 окт 2012, 13:37

скорее всего всё таки нельзя. Всплывает разве что вопрос: зачем? ибо это изврат так как webview крепится к форме а не наоборот.
R.id.team
Политика на форуме запрещена

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 32. Пишем простой браузер

Сообщение dil_android » 02 окт 2012, 19:44

Насколько я помню, на легковесном контейнере JPanel, можно было нестить практически все остальные компоненты (Buttons, Scroll, и т.д.). После того, как он выставлялся transparent, это фактически была стеклянная панель с custom made компонентами на ней. Получалось очень даже ничего. В android я пока такого еще не видел.

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение neoksi » 02 окт 2012, 20:23

dil_android
Посмотрите в сторону RelativeLayout, но точней сказать не могу, так как мне не понятно ваше слово нестить.

П.С. в интернете толкование слова нестить не нашел, может дадите его определение?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение rezak90 » 02 окт 2012, 20:30

а если разместить компонент (кнопку и т.д.) поверх webview то это можно при помощи разметки RelativeLayout. Нужна было такая система когда лепил MapView.
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 32. Пишем простой браузер

Сообщение AndreyI » 02 окт 2012, 20:46

Я тоже не понимаю в чем проблема. В WebView и не нужно добавлять никакие компоненты, потому как это не контейнер ViewGroup, а поверх его пожалуйста, сколько хотите.
Поместите WebView в контейнер RelativeLayout или FrameLayout и поверх WebView помещайте любые другие компоненты, кнопки, чекбоксы, текстовые поля и т.п. , но они будут помещаться не в WebView, а в контейнер ViewGroup.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 32. Пишем простой браузер

Сообщение dil_android » 02 окт 2012, 20:58

google translate дает определение nest как "группа однородных предметов". Это мой доморощенный перевод из Java. Panels are components that can be actually displayed on screen (Панели - это компоненты которые могут быть показаны на экране). Но, вообще то, в книжках по Java очень часто используется определение Nested (nesting) Panels and Components.

А задумка возникла из желания посадить кнопку back на webview.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение rezak90 » 02 окт 2012, 21:03

WebView не является контейнером, оно предусмотрено для отображения гипертекстовых страниц. А кнопки и т.д. нужно лепить на общем лейауте и webview вместе с ними. Layout и есть та "прозрачная панель" о которой вы и говорите.
R.id.team
Политика на форуме запрещена

03uk
Сообщения: 3
Зарегистрирован: 18 ноя 2012, 16:43

Re: Урок 32. Пишем простой браузер

Сообщение 03uk » 18 ноя 2012, 16:45

Вопрос:
При нажатии на кнопку у меня открывается родной браузер, нету выбора не подскажите в чем может быть проблема?

03uk
Сообщения: 3
Зарегистрирован: 18 ноя 2012, 16:43

Re: Урок 32. Пишем простой браузер

Сообщение 03uk » 18 ноя 2012, 16:54

Извините нашел ошибку!

Код: Выделить всё

//нужно было
 <action android:name="android.intent.action.VIEW"/>

Код: Выделить всё

//написал
 <action android:name="android.intent.action.View"/>

dubok79
Сообщения: 12
Зарегистрирован: 24 ноя 2012, 13:41

Re: Урок 32. Пишем простой браузер

Сообщение dubok79 » 27 ноя 2012, 19:14

Прошу помощи, может тут кто поможет?
Добавил в assets файл pref.html в котором установил "якоря" в виде <a href="topic1"></a> ну т.д. При открытии этого файла в браузере как pref.html#topic1 осуществляется переход к нужному якорю. При вызове же через myBrowser.loadUrl("file:///android_asset/pref.html#topic1"); никакого перехода к сожалению не осуществляется. Как быть? Спасибо

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение damager82 » 29 ноя 2012, 15:23

dubok79 писал(а):При вызове же через myBrowser.loadUrl("file:///android_asset/pref.html#topic1"); никакого перехода к сожалению не осуществляется
Тут несколько решений предложены, смотрели?
http://stackoverflow.com/questions/3039 ... ot-working
Насколько я понял, смысл в том, чтобы вызывать ссылку с якорем только после того, как страница целиком загрузилась.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

eternal_ego
Сообщения: 10
Зарегистрирован: 14 дек 2012, 05:19

Re: Урок 32. Пишем простой браузер

Сообщение eternal_ego » 04 янв 2013, 08:07

Подскажите пожалуйста, а где андроид хранит выбранный вариант, когда при указании приложения поставили галочку "use by default for this action" ? И можно ли получить список вариантов, не вызывая диалог выбора, т.е. незаметно для пользователя?

UPD: Про список вариантов, кажется, нашёл. Package Manager, queryIntentActivities

Azzy
Сообщения: 1
Зарегистрирован: 14 янв 2013, 19:10

Re: Урок 32. Пишем простой браузер

Сообщение Azzy » 14 янв 2013, 19:15

Finch писал(а):

Код: Выделить всё

String link = "http://www.ya.ru/yandsearch?text=" + текстовоеполе.getText().toString();
@Override
	public void onClick(View v) {
            if(текстовоеполе.getText().length() > 0) {
                браузер.loadUrl(link);
            } else {
                Toast.makeText(getApplicationContext(), "Поле не может быть пустым.", Toast.LENGTH_LONG).show();
            }
	}
А можно поподробнее??? У меня ничего не получилось... Что ставить вместо "текстовоеполе"?? Id Edit'a или что то другое?

Аватара пользователя
caHek2x
Сообщения: 35
Зарегистрирован: 04 сен 2012, 21:15

Re: Урок 32. Пишем простой браузер

Сообщение caHek2x » 18 янв 2013, 07:19

доброе утро, как узнать загрузилась страница или еще грузиться ... (хочу реализовать если еще грузиться вывод прогресса или чет на подобии ...)

Аватара пользователя
caHek2x
Сообщения: 35
Зарегистрирован: 04 сен 2012, 21:15

Re: Урок 32. Пишем простой браузер

Сообщение caHek2x » 18 янв 2013, 07:52

все нашел .... если кому пригодится вот код ...

Код: Выделить всё

text.setWebChromeClient(new WebChromeClient() {
	public void onProgressChanged(WebView view, int progress)
	{
		loading.setText("Идет загрузка ["+progress+"%], ожидайте...");
		System.out.println("progress "+progress);
		if (progress < 100 && loading.getVisibility() == TextView.GONE) {
			loading.setVisibility(TextView.VISIBLE);
		}
		if (progress == 100) {
			loading.setVisibility(TextView.GONE);
		}
	}
});
text - это WebView
loading - это TextView

busylee
Сообщения: 2
Зарегистрирован: 16 янв 2013, 19:34

Re: Урок 32. Пишем простой браузер

Сообщение busylee » 20 янв 2013, 15:38

При изменении ориентации экрана, активити пересоздается и страница перезагружается, можно ли сделать так чтобы активити не пересоздавалось?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение rezak90 » 20 янв 2013, 16:11

busylee писал(а):При изменении ориентации экрана, активити пересоздается и страница перезагружается, можно ли сделать так чтобы активити не пересоздавалось?
в манифесте для необходимой активити нужно добавить параметр android:configChanges="orientation", пример:

Код: Выделить всё

<activity android:name="MainActivity" android:configChanges="orientation">
R.id.team
Политика на форуме запрещена

Евгений
Сообщения: 2
Зарегистрирован: 28 янв 2013, 22:05

Re: Урок 32. Пишем простой браузер

Сообщение Евгений » 28 янв 2013, 22:25

Люди помогите! новичек в этом деле, знаю php но андроид мне с трудом дается, не могу понять работу методов, ну да ладно, изучу позже! а на данный момент хочу сделать простой браузер, который бы при открытии работал в fullscreen и отображал страничку, адрес (напрмер http://mysite.php) которой в конфигурационном файле находиться, а он соответсвенно не в программе а в какойнить директории, кто подскажет готовый вариант? в дальнейшем хотел бы чтоб этот браузер при открытии страницы еще в фоне парсил адрес сайта (например http://mysite_status.php) и вытягивал от туда значение статуса с переодичностью полминуты, если статус OK то браузер открывает страницу из конфигурационного файла, а если статус NO то пишет что нет связи с сервром, пытаюсь восстановить связь, как только статус парсера OK, браузер снова проходит на страничку из конфигурационного файла.
Смысл этого парсера в том, чтобы браузер определял, доступен ли сервер, и если доступен то запускалась домашняя страница. Можно попробовать и пинговать сервер, но я думаю лучше парсить. Кто поможет мне в этом деле? за вознограждение соответсвенно))

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 32. Пишем простой браузер

Сообщение rezak90 » 28 янв 2013, 23:01

что бы что то парсить браузер не нужен, вот один из вариантов проверки доступности сайта:

Код: Выделить всё

private boolean isUrlConnect() {
    HttpURLConnection urlConnection;
    URL url = new URL("http://mysite.php/");
    try {
        urlConnection = (HttpURLConnection) url.openConnection();
    }catch(Exception e){
        Log.e(TAG,"OpenConnection call failed");
    }
        return true;
    }
    return false;
}
R.id.team
Политика на форуме запрещена

Евгений
Сообщения: 2
Зарегистрирован: 28 янв 2013, 22:05

Re: Урок 32. Пишем простой браузер

Сообщение Евгений » 29 янв 2013, 07:22

rezak90 писал(а):что бы что то парсить браузер не нужен, вот один из вариантов проверки доступности сайта:

Код: Выделить всё

private boolean isUrlConnect() {
    HttpURLConnection urlConnection;
    URL url = new URL("http://mysite.php/");
    try {
        urlConnection = (HttpURLConnection) url.openConnection();
    }catch(Exception e){
        Log.e(TAG,"OpenConnection call failed");
    }
        return true;
    }
    return false;
}
а как мне его с браузером моим связать? Повторюсь нужен браузер , который по доступности сайта открывал страничку из конфиг файла?

Ответить