Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
derec
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 74
#1

Как сделать свайп в linearlayout - Программирование Android

04.04.2014, 14:40. Просмотров 862. Ответов 2
Метки нет (Все метки)

Здравствуйте такой вопрос. Уже даже не знаю где спросить.
как можно сделать свайп в linearlayout (определеном (их несколько на форме))
именно свайп а не обработка нажатий??
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать свайп в linearlayout (Программирование Android):

Свайп по linearlayout - Программирование Android
есть linearlayout в котором находиться еще 2 linearlayout каждый из них заполняет основной на 50% при том что внутри них есть текст и...

Как сделать LinearLayout в несколько колонок - Программирование Android
Появился вопрос, как сделать LinearLayout в две или несколько колонок, каждый из них содержит как минимум по одной imageview и textview,...

Как получить объект класса LinearLayout из файла .xml? - Программирование Android
Как вместо этого: LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); TextView...

Кнопки и свайп - Программирование Android
Всем привет!;D Кто поможет мне по одному вопросу? Тут я видела недавно про листание свайпом был вопрос. Так вот, свайп то я освоила. а вот...

Свайп в приложении - Программирование Android
Здравствуйте такой вопрос как реализовать свайп в приложении? приложении состоит layout в котором находится listview и кнопки чтоб...

Свайп окон в Андроид - Программирование Android
Привет всем! Я хочу сделать свайп страниц, выглядящий примерно так: Количество страниц заранее неизвестно. Нашёл в интернете...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
04.04.2014, 15:02 #2
derec,


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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
 
public class SimpleGestureFilter extends SimpleOnGestureListener{
 
public final static int SWIPE_UP = 1;
public final static int SWIPE_DOWN = 2;
public final static int SWIPE_LEFT = 3;
public final static int SWIPE_RIGHT = 4;
 
public final static int MODE_TRANSPARENT = 0;
public final static int MODE_SOLID = 1;
public final static int MODE_DYNAMIC = 2;
 
private final static int ACTION_FAKE = -13; //just an unlikely number
private int swipe_Min_Distance = 50; //100
private int swipe_Max_Distance = 1350; //350
private int swipe_Min_Velocity = 50; //100
 
private int mode = MODE_DYNAMIC;
private boolean running = true;
private boolean tapIndicator = false;
 
private Activity context;
private GestureDetector detector;
private SimpleGestureListener listener;
 
public SimpleGestureFilter(Activity context,SimpleGestureListener sgl) {
 
this.context = context;
this.detector = new GestureDetector(context, this);
this.listener = sgl;
}
 
public void onTouchEvent(MotionEvent event){
 
if(!this.running)
return;
 
boolean result = this.detector.onTouchEvent(event);
 
if(this.mode == MODE_SOLID)
event.setAction(MotionEvent.ACTION_CANCEL);
else if (this.mode == MODE_DYNAMIC) {
 
if(event.getAction() == ACTION_FAKE)
event.setAction(MotionEvent.ACTION_UP);
else if (result)
event.setAction(MotionEvent.ACTION_CANCEL);
else if(this.tapIndicator){
event.setAction(MotionEvent.ACTION_DOWN);
this.tapIndicator = false;
}
 
}
//else just do nothing, it's Transparent
}
 
public void setMode(int m){
this.mode = m;
}
 
public int getMode(){
return this.mode;
}
 
public void setEnabled(boolean status){
this.running = status;
}
 
public void setSwipeMaxDistance(int distance){
this.swipe_Max_Distance = distance;
}
 
public void setSwipeMinDistance(int distance){
this.swipe_Min_Distance = distance;
}
 
public void setSwipeMinVelocity(int distance){
this.swipe_Min_Velocity = distance;
}
 
public int getSwipeMaxDistance(){
return this.swipe_Max_Distance;
}
 
public int getSwipeMinDistance(){
return this.swipe_Min_Distance;
}
 
public int getSwipeMinVelocity(){
return this.swipe_Min_Velocity;
}
 
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
 
final float xDistance = Math.abs(e1.getX() - e2.getX());
final float yDistance = Math.abs(e1.getY() - e2.getY());
 
if(xDistance > this.swipe_Max_Distance || yDistance > this.swipe_Max_Distance)
return false;
 
velocityX = Math.abs(velocityX);
velocityY = Math.abs(velocityY);
boolean result = false;
 
if(velocityX > this.swipe_Min_Velocity && xDistance > this.swipe_Min_Distance){
if(e1.getX() > e2.getX()) // right to left
this.listener.onSwipe(SWIPE_LEFT);
else
this.listener.onSwipe(SWIPE_RIGHT);
 
result = true;
}
else if(velocityY > this.swipe_Min_Velocity && yDistance > this.swipe_Min_Distance){
if(e1.getY() > e2.getY()) // bottom to up
this.listener.onSwipe(SWIPE_UP);
else
this.listener.onSwipe(SWIPE_DOWN);
 
result = true;
}
 
return result;
}
 
@Override
public boolean onSingleTapUp(MotionEvent e) {
this.tapIndicator = true;
return false;
}
 
@Override
public boolean onDoubleTap(MotionEvent arg0) {
this.listener.onDoubleTap();;
return true;
}
 
@Override
public boolean onDoubleTapEvent(MotionEvent arg0) {
return true;
}
 
@Override
public boolean onSingleTapConfirmed(MotionEvent arg0) {
 
if(this.mode == MODE_DYNAMIC){ // we owe an ACTION_UP, so we fake an
arg0.setAction(ACTION_FAKE); //action which will be converted to an ACTION_UP later.
this.context.dispatchTouchEvent(arg0);
}
 
return false;
}
 
public static interface SimpleGestureListener{
void onSwipe(int direction);
void onDoubleTap();
}
 
}
Активити делаем implements SimpleGestureFilter.SimpleGestureListener

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
 
onResume() {
SimpleGestureFilter gestureDetector = new SimpleGestureFilter(getActivity(), this);
final GestureDetector detector = new GestureDetector(gestureDetector);
your_linear_layout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                detector.onTouchEvent(event);
                return false;
            }
        });
}
 
 //Вот события свайпа
    @Override
    public void onSwipe(int direction) {
        switch (direction) {
            case SimpleGestureFilter.SWIPE_DOWN:
                break;
            case SimpleGestureFilter.SWIPE_UP:
                break;
            case SimpleGestureFilter.SWIPE_LEFT:
                break;
            case SimpleGestureFilter.SWIPE_RIGHT:
                break;
        }
 
    }
Исходник фильтра: https://github.com/t2health/BioZen-A...ureFilter.java
1
derec
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 74
06.04.2014, 06:19  [ТС] #3
а как чувствительность понизить?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 06:19
Привет! Вот еще темы с ответами:

Свайп меню actionbar - Программирование Android
есть код класса main public class main extends ActionBarActivity { String Log_Tag = "Main.java"; private...

Свайп отдельного лайоута - Программирование Android
Здравствуйте возникла проблема есть маинактивити с дизайном из 3 плит линеарлайоута примерно так пример вот код этой плитки: ...

Свайп страниц с разным контентом - Программирование Android
Привет всем! Такая "проблема". есть свайп страниц, напиcанный с помощью ViewPager. Проблема в том что нужно листать 2 страницы, когда...

LinearLayout vs RelativeLayout - Программирование Android
этот LinearLayout вообщевозможно переделать на RelativeLayout??? <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru