Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
59 / 4 / 1
Регистрация: 31.07.2013
Сообщений: 42

Анимация одного пункта в ListView

01.08.2013, 10:15. Показов 2611. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, есть у меня список контактов в ListView, заполняемом моим адаптером. При движении справа-налево по контакту а меня происходит звонок (как у Samsung TouchWIZ). Вопрос, как сделать анимацию или какую-нибудь визулизацию при этом действии?
Мне нужно, чтобы как-то видно было, по какому пункту происходит движение. Подойдет выделение какое-нибудь при нажатии, как у того-же самсунга, и смена надписи на что-то вроде " <- сдвиньте для звонка".

Собственно, сам адаптер, где все это происходит:
Кликните здесь для просмотра всего текста

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
public class ContactsAdapter extends BaseAdapter {
 
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<Contact> objects;
    float fromPosition;
    String number;
    DisplayMetrics DispMetrics;
    
    ContactsAdapter(Context context, ArrayList<Contact> contacts, DisplayMetrics metrics) {
        ctx = context;
        objects = contacts;
        DispMetrics = metrics;
        lInflater = (LayoutInflater) ctx
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return objects.size();
    }
 
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return objects.get(position);
    }
 
    @Override
    public long getItemId(int id) {
        // TODO Auto-generated method stub
        return id;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        
        View view = convertView;
        
        if (view == null) {
              view = lInflater.inflate(R.layout.item, parent, false);
            }
        
        final Contact p = getContact(position);
            
        ((TextView) view.findViewById(R.id.name_tv)).setText(p.name);
        ((TextView) view.findViewById(R.id.num_tv)).setText(p.tel);
        
        
        OnTouchListener listener = new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                number = p.tel;
                switch (event.getAction())
                {
                case MotionEvent.ACTION_DOWN:
                    fromPosition = event.getX();
                    break;
                case MotionEvent.ACTION_UP: 
                    
                    float toPosition = event.getX();
                    analizeSwipe(fromPosition, toPosition);
                    
                }
                return true;
            }
        };
        
        view.setOnTouchListener(listener);
        
        
        return view;
    }
    
    Contact getContact(int position) {
        return ((Contact) getItem(position));
      }
    
    
    public void analizeSwipe(float from, float to){
        
        
        float device_x = DispMetrics.widthPixels;
        
        float minSwype = (device_x / 100) * 30;
        
        if (from > to && (from-to) > minSwype){
            
            Log.i("log_tag","Номер = " + number);
            
            Intent callIntent = new Intent(Intent.ACTION_CALL); 
            callIntent.setData(Uri.parse("tel:" + number));
            ctx.startActivity(callIntent);
        }
    }
    
 
}


Заранее спасибо всем за ответы!

Добавлено через 20 минут
Пробовал в onTouchListener менять бэкграунд у View - ничего не происходит.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2013, 10:15
Ответы с готовыми решениями:

Добавление пункта в ListView
Всем привет,подскажите пожалуйста, есть два активити с Listview в одном актививи список ListView с заполниным списком и мне нужно ,если...

ListView подсветка выделенного пункта
Всем доброго времени суток! Понимаю, вопрос нубский, но никак не получается сделать navigation drawer с listview, в котором...

Выпадающее меню для каждого пункта ListView
Здравствуйте! Как реализовать подобное меню в списке? Я придумал только с использованием spinner-а в каждом item's view-е, но...

3
 Аватар для chizz
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
01.08.2013, 10:59
Глянь это, может поможет.
Зы. Я не смотрел...

1
59 / 4 / 1
Регистрация: 31.07.2013
Сообщений: 42
01.08.2013, 11:43  [ТС]
Цитата Сообщение от chizz Посмотреть сообщение
Глянь это, может поможет.
Зы. Я не смотрел...

Кликните здесь для просмотра всего текста


Спасибо! Скачал исходники - уже много полезного для себя в них нашел.
Удастся ли скопипастить анимацию, вот в чем вопрос. Буду пробовать.
0
59 / 4 / 1
Регистрация: 31.07.2013
Сообщений: 42
02.08.2013, 12:43  [ТС]
Не осилил я это все.

За то, благодаря этому примеру, вытащил onTouchListener из адаптера в активность и там прикрутил простую анимацию сдвига в xml файле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2013, 12:43
Помогаю со студенческими работами здесь

ListView и простой пример определения нажатого пункта
Здравствуйте! Брошу на лайоут ListView и Button Набью на listView две строчки - &quot;Москва&quot;, &quot;Питер&quot;. Как определить...

Загрузка данных из SQLite для каждого пункта ListView
Здравствуйте, у меня такая проблема, не могу сделать так что бы для каждого пункта списка выводилась соответствующая строка в БД в новой...

Как обратиться к элементу (button) внутри пункта списка (ListView)
Здравствуйте! Помогите, пожалуйста Есть активити с ListView. В каждом пункте списка есть пару TextView и один Button. Как и где ...

Анимация ListView
В чем суть:При вертикальном свайпе - кнопки прокручиваются. Крайняя кнопка - плавно уменьшается, а с другой стороны - плавно увеличивается....

Не работает анимация в строках ListView
Пытаюсь реализовать серверный запрос, после чего удалить элемент ListView, по которому кликнул пользователь. Во время запроса к серверу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru