के भीतर स्पर्श/टैप ईवेंट का पता लगाना मैं एंड्रॉइड विकास के लिए काफी नया हूं और फिलहाल मैं एक व्यूअर के साथ काम कर रहा हूं, यह समझने की कोशिश कर रहा हूं कि मैं स्पर्श/टैप ईवेंट कैसे संभाल सकता हूं। मैंने सुबह सुबह जवाब देने के लिए बिताया है और मुझे ऐसा कुछ भी नहीं लगता है जो मेरी मदद करता है।व्यूअर
असल में मेरे पास 5 टुकड़े वाले दर्शक हैं जो सभी एक ही लेआउट का उपयोग करते हैं। मैं बस इतना करना चाहता हूं कि स्थिर दृश्य पर टैप/स्पर्श होने पर पता लगाना चाहिए (जब कोई दृश्य खींचा जा रहा है तो मुझे कोई पता नहीं होना चाहिए)।
जो मैं इकट्ठा करता हूं, वहां से व्यूपैगर डिफ़ॉल्ट रूप से सभी स्पर्श ईवेंट को अवरुद्ध करने में एक समस्या प्रतीत होता है। मेरा मानना है कि इस का उपयोग करके निपटा जा सकता है:
myPager.requestDisallowInterceptTouchEvent(true);
पहले तो मुझे OnTouchListener से कुछ शिकायत मिली और प्रवेश करने के लिए है कि क्या onTouch विधि कभी मारा गया था की कोशिश की है - यह नहीं दिखाई दिया। मैंने इस समस्या के समाधान के रूप में बहुत से बारे में बताए गए जेस्चरडेक्टर वर्ग को भी देखा है, लेकिन स्पष्ट रूप से मुझे अभिभूत महसूस होता है और मुझे यकीन नहीं है कि मुझे कौन से वर्ग/इंटरफेस का उपयोग करना चाहिए।
मैं बस एक व्यूपेजर का उपयोग करते समय सरल स्पर्श/टैप ईवेंट लेना चाहता हूं।
फिलहाल मैं एंड्रॉइड डेवलपर साइट से एनीमेशन ट्यूटोरियल कोड के एक संशोधित संस्करण का उपयोग कर रहा हूं। यह वही है मैं अपने MainActivity.java में फ़ाइल है:
package com.example.pbinteractive;
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.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
/**
* The number of pages (wizard steps) to show in this demo.
*/
private static final int NUM_PAGES = 5;
/**
* The pager widget, which handles animation and allows swiping horizontally to access previous
* and next wizard steps.
*/
private ViewPager mPager;
/**
* The pager adapter, which provides the pages to the view pager widget.
*/
private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
}
/**
* A simple pager adapter that represents 5 {@link ScreenSlidePageFragment} objects, in
* sequence.
*/
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return MyPageFragment.create(position);
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
और यही मैं अपने MyPageFragment.java में फ़ाइल है:
package com.example.pbinteractive;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
public class MyPageFragment extends Fragment implements OnTouchListener {
/**
* The argument key for the page number this fragment represents.
*/
public static final String ARG_PAGE = "page";
/**
* The fragment's page number, which is set to the argument value for {@link #ARG_PAGE}.
*/
private int mPageNumber;
/**
* Factory method for this fragment class. Constructs a new fragment for the given page number.
*/
public static MyPageFragment create(int pageNumber) {
MyPageFragment fragment = new MyPageFragment();
Bundle args = new Bundle();
args.putInt(ARG_PAGE, pageNumber);
fragment.setArguments(args);
return fragment;
}
public MyPageFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPageNumber = getArguments().getInt(ARG_PAGE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.fragment_slide, container, false);
// Set the title view to show the page number.
//((TextView) rootView.findViewById(android.R.id.text1)).setText(
// getString(R.string.title_template_step, mPageNumber + 1));
return rootView;
}
/**
* Returns the page number represented by this fragment object.
*/
public int getPageNumber() {
return mPageNumber;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
}
FYI करें मैं दोनों के देख लिया है इन संसाधनों, क्योंकि उन्हें अक्सर सामना करने वाली समस्या का सबसे अच्छा समाधान माना जाता है (जो मैं एकत्र कर सकता हूं):
android: ViewPager and HorizontalScrollVIew
Fling gesture detection on grid layout
लेकिन मुझे उनसे बहुत मदद नहीं मिली है। जैसे मैंने कहा कि मैं एंड्रॉइड के साथ काम करने के लिए काफी नया हूं इसलिए मैं बस मूल बातें से परिचित होना चाहता हूं!
धन्यवाद
संपादित करें: बस स्पष्ट करने के लिए, मैं हर टुकड़ा भीतर स्पर्श घटनाओं को लेने के लिए चाहते हैं, मैं स्पर्श काम करते हुए घटना के लिए कुछ टुकड़े करना चाहते हैं एक बार के बाद से मैं इस बाधा अतीत मिलता है अन्य सिर्फ अनुत्तरदायी सामग्री प्रदर्शित करेंगे।
आप केवल व्यूअरजर को स्पर्श करना चाहते हैं? या अंदर टुकड़े? – Yahor10
अभी संपादित किया गया :-) – alimac83