【问题标题】:Sliding lock screen滑动锁屏
【发布时间】:2013-12-25 06:58:46
【问题描述】:
使用自定义锁进行挖掘以锁定和解锁设备,与Start 应用程序相同,到目前为止,我在 Google 上遇到了一些问题,但没有运气,即使我发现了一个类似的问题 this,但没有希望。
但我尝试使用setOnTouchListener 进行滑动,但它的故障和滑动不像Start app 那样顺畅。
注意:我的代码有点类似于Custom Slide to unlock
我只是在寻找与滑动锁定和解锁设备相同的功能。
您的建议很有价值。
【问题讨论】:
标签:
android
android-sliding
【解决方案1】:
哇,我很高兴,我自己得到了答案。
这是我的困难代码。
注意:使用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:
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:
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:
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;
} }