2013-10-29 123 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

請發表評論。爲什麼它downvoted ..據我所知這是一個有效的編程問題 –

+0

嘿,男人,我尋找完全一樣的相同的。你可以幫我嗎?你有這個解決方案嗎?我通過差異比較的方式在最近3天裏爲此漫無邊際,但我沒有找到正確的方法或解決方案。你如何做到這一點,你能幫助我嗎? –

+0

@Yog Guru我還在尋找一個解決方案..如果你找到一個謝謝 –

回答

0

我認爲你應該嘗試類似this

還有另一種解決方法。使用相對佈局在seekbar下面設置背景圖像,並使其進度條透明,並將圖像作爲大拇指。

下一個按比例圖像的寬度設置爲搜索條進度

或 有可能是另一種解決方案,您可以使用您的ImageView的ontouchlistener和改變x並保留在y同樣每次和改變喜歡的背景上面的方法。

+0

如果用戶點擊progressDrawable拇指移動請回答int這個線程。如何限制它。我想要只用拇指移動seekbar –

+0

嘗試在onprogresschange和onstarttracking中放置一個條件,將進度設置爲零,除非初始進度小於10。 – Mayank

+0

是否能夠使其與鎖模式一起工作 – 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你試過這個嗎?這對你有用嗎? –