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

SlideMenu, проподает событе сворачивания - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Через SOAP API Magento добавить в корзину магазина продукт http://www.cyberforum.ru/android-dev/thread1074282.html
Нужно в интернет магазине, созданного на движке магента, через Андроид-приложение добавить в корзину товар этого могазина. Это для того, чтобы потом можно было оформить заказ на этот товар. Есть у меня код, через который мне удается залогиниться и создать пустую корзину, получив номер корзины, но добавить к ней товар не удается. В логах выдает такую ​​ошибку: System.err...
Android PLAY при касании экрана и STOP когда палец убран Вот код . . . @Override public boolean onTouchEvent(MotionEvent event) { mpAudio = MediaPlayer.create(this, R.raw.muzik); http://www.cyberforum.ru/android-dev/thread1074156.html
Android какая сейчас неделя от начала года?
пробую определять номер недели так public boolean isEven() { Date today = new Date(); SimpleDateFormat sToday = new SimpleDateFormat("yyyyMMdd"); String dToday = sToday.format(today); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); Date date = null; try { date = df.parse(dToday); } catch (ParseException e) { e.printStackTrace(); }
Android Прекращение проигрывания музыки и анимации
как сделать так чтобы при нажатии кнопок на телефоне (назад и свернуть) прекращалась и анимация и проигрывание музыки?
Android Отправка запроса на сервер - получение ответа в xml и обработка http://www.cyberforum.ru/android-dev/thread1073968.html
Всем добрый день. Искал по всем форумам и всем блогам, но нужного ответа не нашел и не добился результата. Отправляется Get запрос на сервер http://myserver.ru/obrabotchik.php?number=123456 Есть таблица номеров, от куда обработчик берет номера где number=123456 и отправляет ответ ввиде xml обратно. У каждого номера есть 2 подпункта или свойства незнаю как правильно объяснить. И из этого...
Android tabhost всем привет много искал но всё таки не нашёл мне нужно что бы вкладки были с лева 5 штук , но что то найти не могу как сделать их слева даже когда кидаю просто табхост то сразу ошибки в xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" ... подробнее

Показать сообщение отдельно
VictorAkira
3 / 3 / 0
Регистрация: 21.03.2013
Сообщений: 71
17.01.2014, 19:37     SlideMenu, проподает событе сворачивания
Возникла проблема с SlideMenu.
При пустом лайауте фрагмента(на нем пустое листвью), все нормально. Если же заполнить листвью контентом(см. вложения), прекращает срабатывать событие сворачивания-разворачивание(пальцем влево вправо), для данного приложения это критично. Прошу помощи!
Пример брал тут
Листинги:
activity_main.xml
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
<com.android.slidingmenuexample.MainLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
     <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
 
        <ListView
            android:id="@+id/menu_listview"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#43484E" >
        </ListView>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="toggleMenu"
                android:background="#43484E"
                android:textColor="#FFFFFF"             
                android:text="Меню"
                android:id="@+id/close" />        
    </LinearLayout>
 
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <!-- This acts as Actionbar -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#434A54"
            android:orientation="horizontal" >
            
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="toggleMenu"
                android:background="#43484E"
                android:textColor="#FFFFFF"             
                android:text="Меню"
                android:id="@+id/button_menu" />
            
            <TextView
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:text="Мировые католические новости"
                 android:gravity="center"
                 android:textColor="#FFFFFF"
                 android:id="@+id/activity_main_content_title"
                 android:layout_weight="1" />
            
        </LinearLayout>       
        
        <!-- This is where fragment will show up -->
        <FrameLayout
            android:id="@+id/activity_main_content_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        
        </FrameLayout>
        
    </LinearLayout>
 
</com.android.slidingmenuexample.MainLayout>
MainActivity.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
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
package com.android.slidingmenuexample;
 
import java.util.ArrayList;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
 
public class MainActivity extends FragmentActivity {    
    MainLayout mLayout;
    private ListView lvMenu;
    private String[] lvMenuItems;
    Button btMenu;
    TextView tvTitle;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        mLayout = (MainLayout) this.getLayoutInflater().inflate(
                R.layout.activity_main, null);
        setContentView(mLayout);
 
        lvMenuItems = getResources().getStringArray(R.array.menu_items);
        lvMenu = (ListView) findViewById(R.id.menu_listview);
        lvMenu.setAdapter(new ArrayAdapter<String>(this, R.layout.main_list_item, R.id.product_name, lvMenuItems));
        lvMenu.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                onMenuItemClick(parent, view, position, id);
            }
 
        });
 
        btMenu = (Button) findViewById(R.id.button_menu);
        btMenu.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Show/hide the menu
                toggleMenu(v);
            }
        });
 
        tvTitle = (TextView) findViewById(R.id.activity_main_content_title);
 
        FragmentManager fm = MainActivity.this.getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        Mir fragment = new Mir();
        ft.add(R.id.activity_main_content_fragment, fragment);
        ft.commit();
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    public void toggleMenu(View v) {
        mLayout.toggleMenu();
    }
 
    private void onMenuItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        String selectedItem = lvMenuItems[position];
        String currentItem = tvTitle.getText().toString();
        if (selectedItem.compareTo(currentItem) == 0) {
            mLayout.toggleMenu();
            return;
        }
 
        FragmentManager fm = MainActivity.this.getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        Fragment fragment = null;
 
        if (selectedItem.compareTo("Мировые католические новости") == 0) {
            fragment = new Mir();
        } else if (selectedItem.compareTo("Новости Ватикана") == 0) {
            fragment = new Vatican();
        } else if (selectedItem.compareTo("Россия") == 0) {
            fragment = new Rus();
        }else if (selectedItem.compareTo("Католические новости СНГ") == 0) {
            fragment = new CatNews();
        }else if (selectedItem.compareTo("Христианские новости") == 0) {
            fragment = new HristNews();
        }
 
        if (fragment != null) {
            ft.replace(R.id.activity_main_content_fragment, fragment);
            ft.commit();
            tvTitle.setText(selectedItem);
        }
        mLayout.toggleMenu();
    }
 
    @Override
    public void onBackPressed() {
        if (mLayout.isMenuShown()) {
            mLayout.toggleMenu();
        } else {
            super.onBackPressed();
        }
    }
}
MainLayout
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
package com.android.slidingmenuexample;
 
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
import android.widget.LinearLayout;
import android.widget.Scroller;
 
public class MainLayout extends LinearLayout {
 
    private static final int SLIDING_DURATION = 500;
    private static final int QUERY_INTERVAL = 16;
    int mainLayoutWidth;
    private View menu;
    private View content;
    private static int menuRightMargin = 15;
 
    private enum MenuState {
        HIDING, HIDDEN, SHOWING, SHOWN,
    };
 
    private int contentXOffset;
    private MenuState currentMenuState = MenuState.HIDDEN;
    private Scroller menuScroller = new Scroller(this.getContext(),
            new EaseInInterpolator());
    private Runnable menuRunnable = new MenuRunnable();
    private Handler menuHandler = new Handler();
    int prevX = 0;
    boolean isDragging = false;
    int lastDiffX = 0;
 
    public MainLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public MainLayout(Context context) {
        super(context);
    }
 
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 
        mainLayoutWidth = MeasureSpec.getSize(widthMeasureSpec);
        menuRightMargin = mainLayoutWidth * 10 / 100;
    }
 
    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
 
        menu = this.getChildAt(0);
        content = this.getChildAt(1);
        content.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return MainLayout.this.onContentTouch(v, event);
            }
        });
        menu.setVisibility(View.GONE);
    }
 
    @Override
    protected void onLayout(boolean changed, int left, int top, int right,
            int bottom) {
        if (changed) {
            LayoutParams contentLayoutParams = (LayoutParams) content
                    .getLayoutParams();
            contentLayoutParams.height = this.getHeight();
            contentLayoutParams.width = this.getWidth();
            LayoutParams menuLayoutParams = (LayoutParams) menu
                    .getLayoutParams();
            menuLayoutParams.height = this.getHeight();
            menuLayoutParams.width = this.getWidth() - menuRightMargin;
        }
        menu.layout(left, top, right - menuRightMargin, bottom);
        content.layout(left + contentXOffset, top, right + contentXOffset,
                bottom);
 
    }
 
    public void toggleMenu() {
 
        if (currentMenuState == MenuState.HIDING
                || currentMenuState == MenuState.SHOWING)
            return;
 
        switch (currentMenuState) {
        case HIDDEN:
            currentMenuState = MenuState.SHOWING;
            menu.setVisibility(View.VISIBLE);
            menuScroller.startScroll(0, 0, menu.getLayoutParams().width, 0,
                    SLIDING_DURATION);
            break;
        case SHOWN:
            currentMenuState = MenuState.HIDING;
            menuScroller.startScroll(contentXOffset, 0, -contentXOffset, 0,
                    SLIDING_DURATION);
            break;
        default:
            break;
        }
        menuHandler.postDelayed(menuRunnable, QUERY_INTERVAL);
        this.invalidate();
    }
 
    protected class MenuRunnable implements Runnable {
        @Override
        public void run() {
            boolean isScrolling = menuScroller.computeScrollOffset();
            adjustContentPosition(isScrolling);
        }
    }
 
    private void adjustContentPosition(boolean isScrolling) {
        int scrollerXOffset = menuScroller.getCurrX();
 
        content.offsetLeftAndRight(scrollerXOffset - contentXOffset);
 
        contentXOffset = scrollerXOffset;
        this.invalidate();
        if (isScrolling)
            menuHandler.postDelayed(menuRunnable, QUERY_INTERVAL);
        else
            this.onMenuSlidingComplete();
    }
 
    private void onMenuSlidingComplete() {
        switch (currentMenuState) {
        case SHOWING:
            currentMenuState = MenuState.SHOWN;
            break;
        case HIDING:
            currentMenuState = MenuState.HIDDEN;
            menu.setVisibility(View.GONE);
            break;
        default:
            return;
        }
    }
 
    protected class EaseInInterpolator implements Interpolator {
        @Override
        public float getInterpolation(float t) {
            return (float) Math.pow(t - 1, 5) + 1;
        }
 
    }
 
    public boolean isMenuShown() {
        return currentMenuState == MenuState.SHOWN;
    }
 
    public boolean onContentTouch(View v, MotionEvent event) {
        if (currentMenuState == MenuState.HIDING
                || currentMenuState == MenuState.SHOWING)
            return false;
        int curX = (int) event.getRawX();
        int diffX = 0;
 
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
 
            prevX = curX;
            return true;
 
        case MotionEvent.ACTION_MOVE:
            if (!isDragging) {
                isDragging = true;
                menu.setVisibility(View.VISIBLE);
            }
            diffX = curX - prevX;
            if (contentXOffset + diffX <= 0) {
                diffX = -contentXOffset;
            } else if (contentXOffset + diffX > mainLayoutWidth
                    - menuRightMargin) {
                diffX = mainLayoutWidth - menuRightMargin - contentXOffset;
            }
            content.offsetLeftAndRight(diffX);
            contentXOffset += diffX;
            this.invalidate();
 
            prevX = curX;
            lastDiffX = diffX;
            return true;
 
        case MotionEvent.ACTION_UP:
            Log.d("MainLayout.java onContentTouch()", "Up lastDiffX "
                    + lastDiffX);
 
            if (lastDiffX > 0) {
                currentMenuState = MenuState.SHOWING;
                menuScroller.startScroll(contentXOffset, 0,
                        menu.getLayoutParams().width - contentXOffset, 0,
                        SLIDING_DURATION);
            } else if (lastDiffX < 0) {
                currentMenuState = MenuState.HIDING;
                menuScroller.startScroll(contentXOffset, 0, -contentXOffset, 0,
                        SLIDING_DURATION);
            }
            menuHandler.postDelayed(menuRunnable, QUERY_INTERVAL);
            this.invalidate();
            isDragging = false;
            prevX = 0;
            lastDiffX = 0;
            return true;
 
        default:
            break;
        }
 
        return false;
    }
}
simple_list_item.xml
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
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <LinearLayout android:id="@+id/thumbnail"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:padding="3dip"  
        android:layout_alignParentLeft="true"  
        android:layout_marginRight="5dip"
        android:background="#FFFFFF">  
    
        <ImageView  
            android:id="@+id/imageView1"  
            android:layout_width="80dip"  
            android:layout_height="80dip"  
            />  
    </LinearLayout>
    
    
    <TextView  
        android:id="@+id/txt_text"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignTop="@+id/thumbnail"  
        android:layout_toRightOf="@+id/thumbnail"  
        android:textColor="#FFFFFF"  
        android:typeface="sans"  
        android:textSize="15dip"  
        />
 
</RelativeLayout>
Фрагмент mir_layout.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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:orientation="vertical" 
    android:background="#30353B">
 
     <ListView
         android:id="@+id/News"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="#43484E" >
 
    </ListView> 
    
</LinearLayout>
Фрагмент Mir
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
package com.android.slidingmenuexample;
 
 
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
public class Mir extends Fragment {
    public Integer SDF;
    public ArrayList<String> titleList = new ArrayList<String>();
    public ArrayList<String> UrlList = new ArrayList<String>();
    public ArrayList<HtmlHelper> Helper = new ArrayList<HtmlHelper>();
    public Map<Integer, HtmlHelper> HtmlHelperMap = new TreeMap<Integer, HtmlHelper>();
    public Map<String, String> TitleMap = new TreeMap<String, String>();
    public Map<String, String> UrlMap = new TreeMap<String, String>();
    private ArrayAdapter<String> adapter;
    public List<StringWrapper> wrapperList = new ArrayList<StringWrapper>();
    public CustomAdapter customAdapter;
    private ListView lv;
    public String Url = null; 
    private ProgressDialog pd;  
    public Bitmap bitmap;
    public boolean item = false;
    String rssResult = "";
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.mir_layout, null);     
        lv = (ListView) view.findViewById(R.id.News);      
 
        customAdapter = new CustomAdapter(this.getActivity());          
        new NewThread().execute();                 
        return view;
    }
    public class NewThread extends AsyncTask<String, Void, String> 
    {
        public List<StringWrapper> wrapp = new ArrayList<StringWrapper>();
        @Override
        protected String doInBackground(String... params) 
        {
            
            try 
            {
                InputStream input = new URL("http://katolik.ru/mir.feed?type=rss").openStream();
                String xml = convertStreamToString(input);                   
                Document xmlDoc = Jsoup.parse(xml, "", Parser.xmlParser());
                Elements items = xmlDoc.select("item");
                for(Element a : items)
                {
                    
                   for(Element b : a.select("title"))
                   {
                        titleList.add(b.text());
                        
                    }
                   for(Element b : a.select("description"))
                   {
                       UrlList.add(getInmgUrl(b.text()));
                   }       
                   
                }
                Integer i = 0;
                for(String a : titleList)
                {
                    i++;
                    HtmlHelper HH = new HtmlHelper();
                    HH.TitleH2 = a;
                    HtmlHelperMap.put(i, HH);
                }           
                Integer b = 0;
                for(String a : UrlList)
                {
                    b++;
                    HtmlHelper HH = new HtmlHelper();
                    HH = HtmlHelperMap.get(b);
                    HH.URL = a;
                    Helper.add(HH);
                }                           
                for(HtmlHelper a : Helper)
                {
                    wrapp.add(new StringWrapper(a.TitleH2, a.URL));
                }               
            
            
            
            } 
            catch (Exception e) 
            {
                wrapp.add(new StringWrapper("Сообщите разработчику", "Ошибка"));
                e.printStackTrace();
            }
            return null;
        }
        
        public String getInmgUrl(String Imf)
        {
            Document xmlDocDes = Jsoup.parse(Imf);
            Elements el = xmlDocDes.select("img");
            String Fd = "";
               for(Element b : el)
               {
                   Fd = Fd + b.attr("src");
                    
                }           
            return Fd;
        }
        public String convertStreamToString(java.io.InputStream is) {
            java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
            return s.hasNext() ? s.next() : "";
        }       
        
        @Override
        protected void onPostExecute(String result) 
        {
            wrapperList.addAll(wrapp);
            customAdapter.setData(wrapperList);
            lv.setAdapter(customAdapter);
            customAdapter.notifyDataSetChanged();   
        }       
        
    }   
 
 
}
Миниатюры
SlideMenu, проподает событе сворачивания   SlideMenu, проподает событе сворачивания  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru