[android] एंड्रॉइड में स्पर्श करके एक दृश्य से दूसरे दृश्य में SKOUT और स्लाइडिंग जैसे मेनू



Answers

आप केवल उस दृश्य पर TranslateAnimation एनीमेशन का उपयोग कर सकते हैं, जिसे आप फीड के लिए पॉप अप और आपके मेनू के लिए एक और पॉप अप विंडो के साथ ले जाना चाहते हैं। मैंने इसे अपने आवेदन में लागू किया है, और यह एक आकर्षण की तरह काम करता है।


संहिता :

public class SlidingOptionsMenuActivity extends Activity {

    /**
     * Signifies that the menu is already visible
     */
    boolean alreadyShowing = false;
    /**
     * Width of the current window
     */
    private int windowWidth;
    /**
     * Height of the current window
     */
    private int windowHeight;
    /**
     * Reference of the {@link PopupWindow} which dims the screen
     */
    private PopupWindow fadePopup;
    /**
     * The translate animation
     */
    private Animation ta;
    /**
     * The view which needs to be translated
     */
    private RelativeLayout baseView;
    /**
     * Reference of the {@link LayoutInflater}
     */
    LayoutInflater inflater;

    /*
     * (non-Javadoc)
     * 
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Display display = getWindowManager().getDefaultDisplay();
        windowWidth = display.getWidth();
        windowHeight = display.getHeight();
        inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        findViewById(R.id.btnOptions).setOnClickListener(new OnClickListener() {

            /*
             * (non-Javadoc)
             * 
             * @see android.view.View.OnClickListener#onClick(android.view.View)
             */
            @Override
            public void onClick(View v) {
                if(!alreadyShowing){
                    alreadyShowing = true;
                    openSlidingMenu();
                }
            }
        });
    }


    /**
     * Fades the entire screen, gives a dim background
     */
    private void showFadePopup() {
        final View layout = inflater.inflate(R.layout.fadepopup, (ViewGroup) findViewById(R.id.fadePopup));
        fadePopup = new PopupWindow(layout, windowWidth, windowHeight, false);
        fadePopup.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);
    }

    /**
     * Opens the sliding Menu
     */
    private void openSlidingMenu() {
        showFadePopup();
        // The amount of view which needs to be moved out. equivalent to the
        // width of the menu
        int width = (int) (windowWidth * 0.6f);
        translateView((float) (width));
        int height = LayoutParams.FILL_PARENT;
        // creating a popup
        final View layout = inflater.inflate(R.layout.option_popup_layout,(ViewGroup) findViewById(R.id.popup_element));

        final PopupWindow optionsPopup = new PopupWindow(layout, width, height, true);
        optionsPopup.setBackgroundDrawable(new PaintDrawable());

        optionsPopup.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);

        optionsPopup.setOnDismissListener(new PopupWindow.OnDismissListener() {

            public void onDismiss() {
                //Removing the fade effect
                fadePopup.dismiss();    
                //to clear the previous animation transition in
                cleanUp();
                //move the view out
                translateView(0);
                //to clear the latest animation transition out
                cleanUp();
                //resetting the variable
                alreadyShowing = false;
            }
        });
    }

    /**
     * This method is responsible for view translation. It applies a translation
     * animation on the root view of the activity
     * 
     * @param right The position to translate to
     */
    private void translateView(float right) {

        ta = new TranslateAnimation(0f, right, 0f, 0f);
        ta.setDuration(300);
        ta.setFillEnabled(true);
        ta.setFillAfter(true);

        baseView = (RelativeLayout) findViewById(R.id.baseView);
        baseView.startAnimation(ta);
        baseView.setVisibility(View.VISIBLE);
    }

    /**
     * Basic cleanup to avoid memory issues. Not everything is release after
     * animation, so to immediately release it doing it manually
     */
    private void cleanUp(){
        if (null != baseView) {
            baseView.clearAnimation();
            baseView = null;
        }
        if (null != ta) {
            ta.cancel();
            ta = null;
        }
        fadePopup = null;
    }
} //END of Class
//END of file

उम्मीद है कि यह मदद करेगा।

Question

मैं एफबी या जी + ऐप जैसे स्लाइडिंग मेनू को कार्यान्वित करना चाहता हूं और मुझे एफबी मेनू डेमो से कुछ नमूना कोड मिला है और https://github.com/jfeinstein10/SlidingMenu

ये शुरू करने के लिए अच्छे हैं, लेकिन मुझे उनसे कुछ अतिरिक्त चाहिए। यहां की तरह यह केवल मेनू बटन के क्लिक पर ही काम करता है लेकिन मैं इसे इशारे से भी ले जाना चाहता हूं। मैं इस व्यवहार को देखना चाहता हूं कि एक केंद्र दृश्य है और उस केंद्र को दाईं ओर ले जाने पर, एक दृश्य दिखाई देगा और बाईं तरफ बढ़ने पर, मेनू दिखाई देगा। कहें कि तीन विचार ए, बी, सी हैं और जब मैं बाईं ओर सी को स्वाइप करता हूं तो एक दिखाई देता है और जब मैं दाईं ओर सी को स्वाइप करता हूं तो बी दिखाई देता है। सी ए और बी के बीच में है

1. मूल दृश्य दाईं ओर बढ़ता है

दाईं ओर ले जाएं

2. बाईं ओर की तरफ मध्य दृश्य को हटाएं

बाईं ओर ले जाएं

अब मेरा सवाल है: इस तरह के विचारों को विकसित करने के लिए सर्वोत्तम प्रथाएं क्या हैं। मैंने किसी से सुना है कि मुझे टुकड़ों का उपयोग करना चाहिए और पेजर भी देखें। तो मैं इसे कैसे विकसित कर सकता हूं? क्या किसी के द्वारा कोई नमूना कार्यान्वयन किया गया है? किसी भी मदद और सुझाव की सराहना की जाती है।

संदर्भ के लिए इस ऐप को देखें जो इस प्रकार के स्लाइडिंग बी / डब्ल्यू व्यू स्काउट ऐप का उपयोग करता है




एक आधिकारिक तरीका है ... उपयोगी और प्रकाश (v4 समर्थन पुस्तकालय के उपयोग से):

एक नेविगेशन दराज बनाना:

developer.android.com/training/implementing-navigation/…






Links