Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как называется меню, которое вызывается по касанию?

Как правильно называется меню, которое вызывается по касанию? Вот как в приложении В Котакте. Пальцем провел слева направо и появилось меню. Как такой эффект называется? Сенсорное меню? Чем достигается такой эффект в приложениях для Андроид, каким кодом?
Я недавно пытался такое меню сделать для веб-сайта, но там это та еще боль (или я просто чего-то не понимаю). На форуме задал вопрос в соответствующем разделе - ноль ответов. И вот, решил теперь поинтересоваться, как такое меню называется в этом разделе (думаю, здесь-то уж всяко должны ответить).

Добавлено через 1 час 36 минут
Нашел, как это называется: Swipe меню. Посмотрел, как это реализовать, так что вопрос снят.
Ответ:
Сообщение от William Blake
Как правильно называется меню, которое вызывается по касанию?
Если я правильно понял вопрос - Navigation Drawer.
Сообщение от William Blake
Чем достигается такой эффект в приложениях для Андроид, каким кодом?
В Андроид Студио при открытие проекта есть уже готовый макет.
Вопрос: Масштабирование картинок, отрисованных на кнопках

Здравствуйте. Есть кнопки с отрисовнными на них картинками
Код XML
1
android:drawableLeft="@drawable/icon_temp_btn_on_off"
, где drawable/icon_temp_btn_on_off
Код XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/therometr_Pic_Black" 
     android:state_pressed="false"/>
 
     <item android:drawable="@drawable/therometr_Pic_White"
    android:state_pressed="true"/>
</selector>
естественно на разных диагоналях экранов они либо смотрятся маленькими либо не влезают в кнопку. Подскажите как сделать так, чтобы картинки эти масштабировались в зависимости от размеров дисплея. И возможно ли сделать так: загрузить одну, заведомо большую картинку, с хорошим разрешением и как то настроить так, чтобы она уменьшалась под размер кнопки, а не обрезалась краями кнопки?
Ответ: Была у меня такая мысль, но как тогда отслеживать "Click" по Layout-ам и менять цвет текста и картинок при касании? Так что остается только рожать множество картинок под разный dpi ?
Вопрос: Обработка удерживания кнопки нажатой

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

Не по теме:

Сообщение от isen
кавабанга, лонгклик!
вообще там лучше смотреть на принцип а не на то, что логнклик
вместо long может быть например просто касание и удерживание пальца на экране

Вопрос: Как определить что элемент recyclerview пересекает при перемещении регион кнопки

У меня есть recyclerview а внизу экрана есть кнопка. На recyclerview повешен TouchListener и у него есть метод public boolean onTouch(View v, MotionEvent event) в котором определяются события перетаскивания ну типа как здесь
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 photoList.setLayoutManager(mLayoutManager);
        photoList.setAdapter(adapter);
       // photoList.setOnDragListener(this);
        adapter.update(photo);
        setRecyclerViewListener();
        final Rect rect;
        final int top = getActivity().findViewById(R.id.trash_can).getTop();
        rect = new Rect(getActivity().findViewById(R.id.trash_can).getLeft(), getActivity().findViewById(R.id.trash_can).getTop(), getActivity().findViewById(R.id.trash_can).getRight(),getActivity().findViewById(R.id.trash_can).getBottom());
        photoList.setOnTouchListener(new View.OnTouchListener() {
 
 
            @Override
            public boolean onTouch(View v, MotionEvent event) {
 
                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    
 
                }
                if(event.getAction() == MotionEvent.ACTION_MOVE){
                    
 
                    }
                }
                return false;
            }
        });
и вот я хочу определить момент когда перетаскиваемый элемент списка пересечет границы кнопки, которая внизу экрана и в этот момент например поменять цвет кнопки. Как это сделать? Как здесь расчитать координаты, ну этот момент?

Добавлено через 6 минут
То есть определить когда перетаскиваемый item recyclerview пересечет регион кнопки
Ответ: спасибо

Добавлено через 23 часа 37 минут
Еще такой вопрос. Как показано на скрине выше, картинка, когда мы ее перетаскиваем на кнопку,накладывается на эту кнопку сверху. А у меня в разметке получается, что кнопка накладывается на recyclerview и поэтому картинка при перетаскивании через кнопку проходит как бы под кнопкой, а должна над этой кнопкой. Как такое можно реализовать?
Вопрос: Обработчик кнопки не работает - приложение компилируется, но крашится при запуске

Всем привет!
Собственно, проблема: у меня получилось сделать udp-listener за пару вечеров - слава яйцам!
Теперь я захотел добавить туда кнопку - нужно инкриментировать значение счётчика по нажатию кнопки
(вообще хочу массив, чтобы по нажатию кнопки в массив добавлялся новый элемент с текущим содержанием текста, полученного по udp, и по нажатию второй кнопки - либо сохрнять этот массив на диск, либо отправлять на почту через 3г - смотря что проще)
делал вот по этому тюториалу

- та же фигня.
и при попытке запуска с изменённм кодом приложение компилируется ок, но крашится.
сейчас код main_activity.java выглядит вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class MainActivity extends Activity {
//    Button button;
    Button button = (Button) findViewById(R.id.button);
    Button button2;
    int counter = 0;
    TextView textViewLitres;
    TextView textViewADC;
    private String ip;
    private int port;
    static TextView tv;
    public static Handler UIHandler;
    static
    {
        UIHandler = new Handler(Looper.getMainLooper());
    }
    public static void runOnUI(Runnable runnable) {
        UIHandler.post(runnable);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.textView1);
        new Thread(new ClientListen()).start();
button.setOnClickListener(this);
        //button2.setOnClickListener(this);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                //if(v==button){
                counter++;
                textViewLitres.setText(Integer.toString(counter));
                //    }
            }
        });
    }
 
}
если убрать строчку
button.setOnClickListener(this);
то приложение запускается, но и на клики не реагирует :-(

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

Добавлено через 10 минут
на всякий случай, вот сообщение об ошибке:

07-09 03:00:09.470 17770-17770/com.example.red.udp_listener_test W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x416edd40)
07-09 03:00:09.472 17770-17770/com.example.red.udp_listener_test E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.red.udp_listener_test, PID: 17770
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.red.udp_listener_test/com.example.red.udp_listener_test.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1892)
at com.example.red.udp_listener_test.MainActivity.<init>(MainActivity.java:20)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1084)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
************at android.app.ActivityThread.access$800(ActivityThread.java:139)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
************at android.os.Handler.dispatchMessage(Handler.java:102)
************at android.os.Looper.loop(Looper.java:136)
************at android.app.ActivityThread.main(ActivityThread.java:5086)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
************at dalvik.system.NativeStart.main(Native Method)
07-09 03:00:11.436 17770-17770/? I/Process﹕ Sending signal. PID: 17770 SIG: 9


какое-то ZygoteInit...

Добавлено через 33 минуты
UPD
Нашел затык - объявил в самом начале класса правильно. а вот в onCreate надо было продублировать что ли - забыл.
Короче, теперь лучше - кнопка нажимается (знчение инкриментируется), но всё равно вылетает

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class MainActivity extends Activity implements OnClickListener {
    Button button;
    //Button button = (Button) findViewById(R.id.button);
    Button button2;
    int counter = 0;
    TextView textViewLitres;
    TextView textViewADC;
    private String ip;
    private int port;
    static TextView tv;
    public static Handler UIHandler;
    static
    {
        UIHandler = new Handler(Looper.getMainLooper());
    }
    public static void runOnUI(Runnable runnable) {
        UIHandler.post(runnable);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.textView1);
        button = (Button) findViewById(R.id.button);
        new Thread(new ClientListen()).start();
 
        //button2.setOnClickListener(this);
        button.setOnClickListener(this);
    };
    @Override
    public void onClick(View v) {
        if(v==button){
        counter++;
            Log.d("button liters clicked", Integer.toString(counter));
        textViewLitres.setText(Integer.toString(counter));
            }
    };
}
на этот раз мешается строчка в обработчике onClick:
textViewLitres.setText(Integer.toString(counter));
и кажется, я даже догадываюсь, почему (странно, что он на этапе компиляции на это никак не ругается)
Ответ: ok, получилось запихнуть в массив. теперь такое дело.
удобнее всего мне бы было заиметь этот массив в почте - хотя бы и просто сырым текстом построчно.
но дело в том, что вайфай-сетка, к которой подцеплено устройство, не будет иметь выхода в интернет.
могу ли я при подключенном вайфае заставить своё приложение ломиться в сеть через 3г?

или проще сразу наплевать на это и пробовать разбираться с файловой системой?

Добавлено через 29 минут
кажется, понял, что нужно: сохранять файл, а потом использоать intent

теперь еще момент. как перевести строчку FF в число 255, строчку 10 в число 16? я что-то подзапутался с этим, не знаю, как у гугла правильно спросить...

Добавлено через 10 часов 37 минут
хехе. вроде всё работает - и сохранение, и отправка, и не так уж и сложно. stackoverflow рулит!
Вопрос: Показать кнопки при клике на нужный элемент

Добрый вечер!

Проблема: мне нужно на начальном этапе сделать кнопки "скрытыми", и как только нажимают на нужный элемент - сделать кнопки видимыми.

Делаю так, как посоветовали:

(Этот кусок кода я прописываю в методе onCreate)
Java(TM) 2 Platform Standard Edition 5.0
1
2
final ImageButton btn1 = (ImageButton) this.findViewById(R.id.btn);
        btn1.setVisibility(View.GONE);
отлично, кнопки скрывает.
Вешаю на картинку обработчик клика - "если на тебя нажали - покажи мне эти кнопки".

Java(TM) 2 Platform Standard Edition 5.0
1
2
final ImageButton btn1 = (ImageButton) this.findViewById(R.id.btn);
        btn1.setVisibility(View.VISIBLE);
Но проблема в том, что кнопки не показываются. Да, кнопки "типа сдвигаются", типа там где-то существуют, но не отображаются. Попробовала скрытие кнопок убрать на другой элемент, т.е.:
нажимаем на другой элемент -> кнопки скрываются.
нажимаем на нужную картинку - кнопки показываются.

А как сделать так, чтобы сразу кнопки были скрыты и по клику отображались?

Обработчик клика (находится в onCreate):
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
final ImageView imgTep = (ImageView) this.findViewById(R.id.imgt);
 
        imgTep.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View arg0, MotionEvent event) {
                // Нажатие
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    final ImageButton btn1 = (ImageButton) findViewById(R.id.btn);
                    btn1.setVisibility(View.VISIBLE); 
                }
 
                return true;
            }
        });
Ответ:
Сообщение от Nullik
Вот такие приколы с этой кнопкой
а в чем прикол? если вы знаете как скрывать или отображать кнопки было бы логично для начала
написать что судя по логу строка например
findViewById(R.id.btn).setVisibility(View.VISIBLE);
выполнилась
тогда понятно будет что что то не так с этой строкой (или какой то другой от которой вы ожидаете чего то)
есть такая строка-обманщица?
Вопрос: Программно нажать кнопку другого приложения

Приветствую. Есть ли возможность под android программно:

1. Нажать кнопку другого приложения?
2. Минимизировать\закрыть чужое приложение\активность?
3. Сэмулировать ввод текста в текстовое поле чужой активности?
4. Изменить текст контрола в чужом приложении?

ЗЫ: устройство нерутовано.

Спасибо.
Ответ: за ответить/сбросить спасибо! Нашел пока только через рут - эмуляцией кнопок... жутко тормозило...
(позднее ваш метод попробую)

Сообщение от lifestyle
что значит сворачивание окон?!
Когда я совершаю вызов или уже разговариваю, то получаю на весь экран окошко, закрывающее остальные активити. При этом даже нотиф-панель перестает работать. Чтобы выйти приходится нажать ХОУМ. После этого не всегда знаю где искать кнопку сбросить звонок...

Пример: Я говорю с другом (обычный режим звонка). Тут приходит код через смс с паролем для входа в клиент-банк. Я хочу его продиктовать и... приходиться сворачивать звонилку и лезть в смски. В лучшем случае пароль в первой строке и виден в нотифе. Потом ищу куда свернул эту форму разговора чтобы сбросить звонок...

Находил прогу (название не помню - ставил пачками чтобы изучить возможности). которая во время звонка выводила панельку с кучей кнопок - сбросить, начать писать смс, запланировать напоминалку на звонок... там много чего было - не помню (половина не нужных), но была кнопка "свернуть". Тогда панелька на пол экрана превращалась в маленькую круглую кнопку прижатую к бортику. И активити звонилки сворачивалась. При нажатии на эту круглую кнопку я снова возвращался в активити звонилки (посмотреть сколько уже говорю или сбросить звонок)
Вопрос: Передача текста в кнопку

Всем привет.
Сейчас пытаюсь сделать свое первое приложение, и выбор пал на судоку. Решил создать поле под судоку из 81 кнопки, и 9 кнопок под передачу значений в выбранные кнопки на поле. И вот столкнулся с такой проблемой, код ниже не хочет передавать значение в кнопку. Как я понял, проблема в массиве. Помогите решить данную проблему.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 
int idBut = 0;
public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1: idBut = b1.getId(); break;
            case R.id.button82:
                for(int i = 0; i<=masBut.length; i++){
                        if(idBut == masBut[i].getId()){
                           masBut[i].setText("1");
                    }
                } break;
        }
}
Ответ: NikBobkov, ваш код не работал потому что вы инициализировали массив ссылками на кнопки в которые еще ничего не было записано - то есть там был null
Вопрос: Количество миллисекунд между первым и вторым нажатием на кнопку

Как на java (android studio) проще и лучше узнать количество миллисекунд между первым и вторым нажатием на одну и ту же кнопку? Спасибо!
Ответ: Запомнить время первого нажатия, потом вычесть его из времени второго нажатия. Определить время - System.CurrentTimeMillis.
Вопрос: Размещение кнопки на большой картинке

Добрый вечер!
Подскажите идею, как реализовать следующее:

Есть картинка размером 3000 х 3000, она отображается в 100% масштабе. Есть две кнопки, у одной координаты верхнего левого угла в 0 х 0, у другой в 2800 х 2800. Как разместить кнопки на картинке, чтобы программно прокручивая картинку можно было найти эти кнопки?
Ответ: Nullik, у меня получилось вот так:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="#4d0616">
 
    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="5000dp"
                android:layout_height="5000dp"
                android:src="@mipmap/ic_launcher"
                android:scaleType="fitXY"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:text="BUTTON"
                android:layout_gravity="right|bottom"/>
        </FrameLayout>
 
    </HorizontalScrollView>
 
</ScrollView>
Картинка большая, кнопка в правом нижнем углу.