2013-10-29 13 views
6

हाय अनलॉक करने के लिए मैं एक कस्टम लॉक स्क्रीन जिसमें मैं स्लाइड के रूप में छवि में दिखाया गया एक imageView साथ अनलॉक करने के लिए बदलना चाहते हैं विकसित करने के लिए कोशिश कर रहा हूँ।कस्टम स्लाइड

enter image description here

यह मैं अब तक क्या कोशिश की है।

मैं स्क्रीन के बाएँ कोने में एक छवि रखा जाता है और क्षैतिज कोड नीचे छवि खींचें करने के लिए onTouchListner इस्तेमाल किया है।

left_Locker.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       int eid = event.getAction(); 
       switch (eid) { 
       case MotionEvent.ACTION_DOWN: 
        toastText.setVisibility(View.VISIBLE); 
        toastText.setTextColor(Color.BLACK); 
        toastText.setText("Slide to Unlock"); 
        break; 
       case MotionEvent.ACTION_MOVE: 
        RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) left_Locker.getLayoutParams(); 
        int x = (int) event.getRawX(); 
        mParams.leftMargin = x - 50; 
        left_Locker.setLayoutParams(mParams); 
        break; 
       case MotionEvent.ACTION_UP: 
         toastText.setVisibility(View.GONE); 
         break; 
       default: 
        break; 
       } 
       return true; 
      } 
     }); 

छवि क्षैतिज चाल है, लेकिन मैं क्या देख रहा हूँ के रूप में ऊपर चित्र में दिखाया गया है खींचें करने के लिए भी छवि पृष्ठभूमि पाने के लिए है। क्या मैं एक ImageView का उपयोग कर सही रास्ते पर हूँ ??

नीचे दी गई छवि है जो मैंने कोशिश की है।

enter image description here

मैं छवि क्षैतिज स्थानांतरित कर सकते हैं के रूप में मैं स्क्रॉल लेकिन कैसे पृष्ठभूमि पाने के लिए ??

+0

एक टिप्पणी छोड़ दें। यह क्यों कम हो गया है .. जैसा कि मैं समझता हूं कि यह एक वैध प्रोग्रामिंग प्रश्न है –

+0

हे मैन, मैं बिल्कुल इसी तरह की तलाश में हूं। क्या आप मेरी मदद कर सकते हैं? क्या आपको इसके लिए अपना समाधान मिला है? मैं पिछले 3 दिनों से diff diff तरीकों से इसके लिए घूम रहा हूं लेकिन मुझे सही रास्ता या समाधान नहीं मिल रहा है। आप यह कैसे कर सकते हैं आप मेरी मदद कर सकते हैं? –

+0

@Yog गुरु मैं भी अभी भी इस के लिए एक समाधान के लिए देख रहा हूँ .. इस सूत्र पूर्णांक उत्तर दें आप एक धन्यवाद –

उत्तर

0

मुझे लगता है कि आप this की तरह कुछ कोशिश करनी चाहिए।

या

इसके आसपास एक और तरीका है। तलाशबार के नीचे पृष्ठभूमि छवि सेट करने के लिए सापेक्ष लेआउट का उपयोग करें और इसकी प्रगति पट्टी पारदर्शी और अंगूठे के रूप में छवि बनाओ।

अगले seekbar प्रगति के अनुपात में छवि चौड़ाई सेट

या वहाँ एक और समाधान हो सकता है, तो आप अपने imageView पर एक ontouchlistener उपयोग कर सकते हैं और केवल एक्स बदल सकते हैं और y एक ही हर छोड़ने के लिए और की तरह पृष्ठभूमि बदलने उपरोक्त विधि।

+0

पाते हैं उपयोगकर्ता progressDrawable पर क्लिक करता है, तो अंगूठे ले जाता है। इसे कैसे प्रतिबंधित करें। मैं केवल अंगूठे का उपयोग कर –

+0

जब तक inital प्रगति से कहते हैं कि 10 – Mayank

+0

आप इसे lockpattern – Mayank

1

मैं आपके कोड में कुछ संशोधन करता हूं और मैंने हासिल किया।

नीचे दोनों ओर (Left & Right) करने के लिए स्क्रीन के अंत में छवि स्लाइड करने के लिए कोड है।

यह आप दोनों पक्ष जो आप स्लाइड करने के लिए चाहते हैं के लिए 9patch छवि का उपयोग करने के लिए है के लिए

public class MainActivity extends Activity implements OnTouchListener { 

ImageView left,right; 
int leftPosition,rightPosition; 
boolean getSize = false; 
int width; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    left = (ImageView)findViewById(R.id.left); 
    right = (ImageView)findViewById(R.id.right); 

    leftPosition = left.getRight(); 
    rightPosition = right.getLeft(); 

    width = getWindowManager().getDefaultDisplay().getWidth(); 

    left.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      int eid = event.getAction(); 
      switch (eid) { 
      case MotionEvent.ACTION_DOWN: 
       /* toastText.setVisibility(View.VISIBLE); 
       toastText.setTextColor(Color.BLACK); 
       toastText.setText("Slide to Unlock");*/ 

       if(!getSize) 
       { 
        leftPosition = left.getRight(); 
        rightPosition = right.getLeft(); 
        getSize =true; 
       } 
       break; 

      case MotionEvent.ACTION_MOVE: 

       RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) left.getLayoutParams(); 
       int x = (int) event.getRawX(); 

       if (x>leftPosition) 
        mParams.width = x; 
       left.setLayoutParams(mParams); 
       break; 

      case MotionEvent.ACTION_UP: 

       RelativeLayout.LayoutParams mParam = (RelativeLayout.LayoutParams) left.getLayoutParams(); 
       mParam.width = leftPosition; 
       left.setLayoutParams(mParam); 
       break; 

      default: 
       break; 
      } 
      return true; 
     } 
    }); 


    right.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      int eid = event.getAction(); 
      switch (eid) { 
      case MotionEvent.ACTION_DOWN: 
       /* toastText.setVisibility(View.VISIBLE); 
       toastText.setTextColor(Color.BLACK); 
       toastText.setText("Slide to Unlock");*/ 
       break; 

      case MotionEvent.ACTION_MOVE: 

       RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) right.getLayoutParams(); 
       int x = (int) event.getRawX(); 

       if (x<rightPosition) 
        mParams.width = width-x; 
       right.setLayoutParams(mParams); 
       break; 

      case MotionEvent.ACTION_UP: 
        //toastText.setVisibility(View.GONE); 
       RelativeLayout.LayoutParams mParam = (RelativeLayout.LayoutParams) right.getLayoutParams(); 
       mParam.width = width - rightPosition; 
       right.setLayoutParams(mParam); 
       break; 
      default: 
       break; 
      } 
      return true; 
     } 
    }); 
} 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 
    return false; 
} } 
+0

@contactmeandroid पर क्लिक करने में सक्षम हूं क्या आपने यह कोशिश की है? क्या यह आपके लिए उपयोगी है? –

संबंधित मुद्दे