2013-10-29 75 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你试过这个吗?这对你有用吗? –