Первые вопросы по Android

Ответить
Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Первые вопросы по Android

Сообщение chuikoff » 30 мар 2012, 16:21

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

1) У меня в главном окне, есть объект editText1, почему при запуске приложения на реальном девайсе у меня сразу запускается клавиатура, а на виртуалке, всё норм? Как сделать чтоб на риал дивайс, всё было норм, и клава не запускалась при старте?

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

3) И почему во вкладке Custom & Library View пусто? Что там должно быть и как добавить?

4) Как сделать картинки кликабельными? Чтобы при нажатии он отправлял на определённый адрес УРЛ. Ну вобщем как сделать баннеры? И как их лучше сделать, чтобы можно было менять, не прибегая к редактированию кода и перекомпиляции приложения (используя веб)?

Пока, всё!
Разработка сайтов любой сложности.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 30 мар 2012, 21:36

1) потому что реальный девайс имеет мало общего с эмулятором. Мало того, даже поведение на разных девайсах может отличаться. Попробуйте использовать в методе onCreate() принудительную установку фокуса на любой другой View.

2) потому что вы так его сверстали (вернее, не сверстали). Читайте вот этот урок
http://startandroid.ru/uroki/vse-uroki- ... krana.html

3) Где эта вкладка?

4) как вариант, можете в активити прописать для ImageView onClickListener. Почитайте вот этот урок
http://startandroid.ru/uroki/vse-uroki- ... utton.html
В обработчике события открывайте URL в браузере, например, так:

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

private void GoToGoogleClick() {
		String url = "http://www.google.com";
		Intent i = new Intent(Intent.ACTION_VIEW);
		i.setData(Uri.parse(url));
		startActivity(i);
	}

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 31 мар 2012, 15:40

1) Можете привести код, я просто веб-программист, с Java мало знаком.
2) Спасибо!
3) Да в принципе это не нужно и не важно пока.
4) Ну за общий принцип спасибо, но я думаю лучше баннеры грузить с удалённого сервера в виде html. Может есть ссылка как работать с WebView? Он же вроде должен помочь мне решить этот вопрос?!
Разработка сайтов любой сложности.

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 31 мар 2012, 15:44

А по второму пункту есть какие-нить общие принципы верстки?
Просто я когда использовал ScrollView, а в него вставил LinearLayout, мне какую-то ошибку выдал:

ScrollView can host only one direct child
Exception details are logged in Window > Show View > Error Log

Что-то с детьми связано вроде.
Разработка сайтов любой сложности.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 31 мар 2012, 22:48

вот так в onCreadte()

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

myButton.requestFocus();
вот так в xml можно попробовать

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

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
        <requestFocus />
    </EditText>

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 01 апр 2012, 06:15

А что такое android:ems ?

У меня <requestFocus /> уже стоял, я его убрал не помогло убрать фокус.

myButton.requestFocus();
Приложение вообще не запускается.
myButton.clearFocus(); тоже самое.
Разработка сайтов любой сложности.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 01 апр 2012, 11:24

Если у вас в xml только 1 EditText, то фокус с него и не пропадет.

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

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Введите запрос :" />
 
    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
                                                     <requestFocus />
    </EditText>
    
    <EditText
        android:id="@+id/editText2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
    </EditText>
 
    <Button
        android:id="@+id/button1"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="Найти!" >
        
</Button>

</LinearLayout>
устанавливая <requestFocus /> между двумя EditText можно манипулировать фокусом.
Далее в классе активити:

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

	Button btn_find;
	EditText et_t1, et_t2;

	/** Called when the activity is first created. */
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btn_find = (Button)findViewById(R.id.button1);
        
        et_t1 = (EditText)findViewById(R.id.editText1);
        et_t2 = (EditText)findViewById(R.id.editText2);
        
        et_t1.requestFocus();
Выполняется ПОСЛЕ установки фокуса в xml и "затирает" его результаты.

Кнопка Button не может принимать фокус, но тем не менее, у меня нормально запускается с

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

btn_find.requestFocus();
ничего не падает и не вылетает, но фокус остается на TextEdit.
Правильнее делать так:

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

        if (btn_find.isFocusableInTouchMode()) {
        	btn_find.requestFocus();                      // <-- сюда не зайдет, т.к. кнопка не может принимать фокус
        }

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 02 апр 2012, 11:11

Никак не выходит, вообще у меня одно поле, но я сделал второе, и всё сделал как в вашем примере, но почему-то мой Samsung Galaxy W, никак не хочет заткнуть свою клаву.

Я уже решил отключить основное поле выставив enabled:false, думал не запустится, фиг там, он выдал ошибку какую-то, запустился, и начал печатать в неактивное поле!!! Ужас! В вебе всё проще, но я не отступлюсь!
Разработка сайтов любой сложности.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 02 апр 2012, 11:56

давайте что ли код ))

только попрошу код java и xml разметку, R давать не нужно

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 02 апр 2012, 15:27

andev писал(а):давайте что ли код ))
только попрошу код java и xml разметку, R давать не нужно

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

package com.app.kamchatka;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;

public class KamchatkaActivity extends Activity implements OnClickListener {
	
	EditText request;
	Button search;
	
	/** Вызываем при загрузке. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        search = (Button) findViewById(R.id.button1);
        request = (EditText) findViewById(R.id.editText1);
        
        search.setOnClickListener(this);
    }
    
    /** Запускаем при клике поиск. */
    public void onClick(View v)
    {
    	Intent i = new Intent(this, Search.class);
		i.putExtra("request", request.getText().toString());
    	startActivity(i);
    }
    
    /** Вызываем при изменении. */
    @Override
    public void onConfigurationChanged(Configuration _newConfig) {
    	super.onConfigurationChanged(_newConfig);
    	if(_newConfig.keyboardHidden==Configuration.KEYBOARDHIDDEN_NO) {
    		//Hi
    	}
    }
    
    
    /** Вызываем меню. */
    public boolean onCreateOptionsMenu(Menu menu) {
    	menu.add("Выход");
    	menu.add("Поиск");
    	menu.add("О Программе");
		return super.onCreateOptionsMenu(menu);
    }
    
    /** Вызываем событие при клике на меню. */
    public boolean onOptionsItemSelected(MenuItem item) {
    	Toast.makeText(this,item.getTitle(), 1000).show();
    	return super.onOptionsItemSelected(item);
    }

    
}

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    android:orientation="vertical">

    <TextView
        android:layout_width="286dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="30dp"
        android:bufferType="spannable"
        android:clickable="false"
        android:maxWidth="100dp"
        android:text="@string/hello"
        android:textStyle="normal"
        android:typeface="sans" android:id="@+id/descripion"
        
        />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:layout_marginTop="10dp">

            <EditText
                android:id="@+id/editText1"
                android:layout_width="201dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:hint="@string/enter_query" android:autoLink="none" android:bufferType="normal" android:clickable="true">

            </EditText>

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="@string/search"
                android:text="@string/search" android:layout_marginTop="4dp" android:layout_marginLeft="5dp" android:width="80dp" android:onClick="onClick"/>

        </TableRow>


            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical|center_horizontal|center"
                android:contentDescription="@string/see"
                android:hint="@string/see"
                android:tag="@string/see"
                android:text="@string/see"
                android:typeface="normal" android:layout_margin="20dp"
                />

    </TableLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" android:baselineAligned="true" android:layout_gravity="center" android:orientation="horizontal" android:gravity="center">

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/gorduma" android:contentDescription="@string/gor_duma" android:layout_margin="5dp" android:clickable="true"/>

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/socium" android:contentDescription="@string/socium" android:layout_margin="5dp" android:clickable="true"/>

    </LinearLayout>

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg"
        android:clickable="true"
        android:contentDescription="@string/adv"/>

</LinearLayout>
Вот код, но я его почистил, всё равно не работало. На виртуальном девайсе норм, а на реальном нифига не пашет.
Разработка сайтов любой сложности.

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 03 апр 2012, 00:03

запускается, фокус на эдиттексте, курсор мигает, клавы нет
Samsung Galaxy AT&T

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 03 апр 2012, 02:12

Думал что из-за клавы такая хрень, менял между самсунговской и swype, не помогло.
Нужно будет искать метод убрать клаву всё равно. Может попробовать что-то с этим методом сделать?

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

/** Вызываем при изменении. */

    @Override

    public void onConfigurationChanged(Configuration _newConfig) {

        super.onConfigurationChanged(_newConfig);

        if(_newConfig.keyboardHidden==Configuration.KEYBOARDHIDDEN_NO) {

                //Hi

        }

    }
Разработка сайтов любой сложности.

Аватара пользователя
chuikoff
Сообщения: 17
Зарегистрирован: 30 мар 2012, 10:20
Откуда: Камчатка
Контактная информация:

Re: Первые вопросы по Android

Сообщение chuikoff » 03 апр 2012, 02:15

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

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Первые вопросы по Android

Сообщение andev » 03 апр 2012, 08:38

Согласен, у меня была подобная проблема
viewtopic.php?f=33&t=715

Наверное, действительно зависит от аппарата. Повторюсь - я использовал ваш код и при старте приложения клавы не было

Ответить