Android 如何在刷卡时更改图像视图背景?
例如,必须绘制图像的布局 我将Android 如何在刷卡时更改图像视图背景?,android,swipe,gesture,Android,Swipe,Gesture,例如,必须绘制图像的布局 我将ImageView膨胀成一个布局。当我在屏幕上滑动时,我需要将每个圆圈的颜色更改为绿色。我该怎么做呢。我用手势检测器试过了,但我找不到我需要的东西 这是我的密码。。我通过膨胀图像视图来创建此视图 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeat
ImageView
膨胀成一个布局。当我在屏幕上滑动时,我需要将每个圆圈的颜色更改为绿色。我该怎么做呢。我用手势检测器试过了,但我找不到我需要的东西
这是我的密码。。我通过膨胀图像视图来创建此视图
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(1024);
setContentView(R.layout.test);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
count = width/30;
totalCircles = count * (height/30);
horizontalSpace = width%30;
verticalSpace = height%30;
mRelativeLayout = (RelativeLayout)findViewById(R.id.fl);
mRelativeLayout.setPadding(horizontalSpace/2, verticalSpace/2, horizontalSpace/2, verticalSpace/2);
for(int i=1;i<totalCircles+1;i++){
myButton = new ImageView(this);
myButton.setId(i);
myButton.setImageResource(R.drawable.circle_grey);
LayoutParams lp = new LayoutParams(0,0);
if(i%count != 1){
lp.addRule(RelativeLayout.RIGHT_OF, imgViews.get(i-2).getId());
if(imView != null){
lp.addRule(RelativeLayout.BELOW, imView.getId());
}
if(i%count == 0){
imView = myButton;
}
}else{
if(imView != null){
lp.addRule(RelativeLayout.BELOW, imView.getId());
}
}
mRelativeLayout.addView(myButton,lp);
myButton.getLayoutParams().width = 30;
myButton.getLayoutParams().height = 30;
imgViews.add(myButton);
myButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
System.out.println("Inside touch listener");
ImageView imV = (ImageView)v;
imV.setImageResource(R.drawable.circle_green);
}
return false;
}
});
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().addFlags(1024);
setContentView(R.layout.test);
DisplayMetrics DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
高度=displaymetrics.heightPixels;
宽度=displaymetrics.widthPixels;
计数=宽度/30;
totalCircles=计数*(高度/30);
水平空间=宽度%30;
垂直空间=高度%30;
mrrelativelayout=(RelativeLayout)findViewById(R.id.fl);
mrrelativelayout.setPadding(水平空间/2、垂直空间/2、水平空间/2、垂直空间/2);
对于(int i=1;i而不是膨胀一个ImageView。您应该填充一个GridView,其中每个GridCell都包含一个圆形图像。现在
设置这些GridCell的OnTouchEvent以更改GridCell内的图像视图。我的建议是使用带有适配器的GridView
,在适配器内,您将为每个imagView
设置位置,该位置允许您检查图像是否被触摸,具体取决于您可以更改ImageView
颜色为白色或绿色杰克·福安尼的回答部分正确。您需要使用gridview.onTouch
而不是imagView.onTouch
。
请检查一下这个样品
gv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float currentXPosition = event.getX();
float currentYPosition = event.getY();
int position = gv.pointToPosition((int)currentXPosition, (int) currentYPosition);
//using the position obtained you can change the imageview color.
}
return true;
}
});
但我也需要检测前后移动以及对角线移动..是否可以使用gridview?当我在每个圆上滑动时,我试图将此圆的颜色更改为绿色,就像我们使用模式解锁phhone一样…你到底为什么使用相对布局输出?只需使用Tablelayout或GridVie即可w、 你在github中有这个代码吗?我需要一个这样的实现来解决我的工作…我在屏幕上滑动时imageview会选择吗?是的,正如我说的setimagView.onTouch
检查是否已经触摸过,如果没有,则将其变为白色,然后将其变为绿色,你可以按数组进行检查,适配器内的图片位置将是key在阵列内检查谢谢Jack,你的回答给我一个火。我使用了触摸事件和网格视图,正如mahesh所说;)很高兴你找到了你的方法