现在我想在每次触摸事件中更改img1的上边距(每次触摸事件下降10 px)。下面是我的代码。我已将此代码放入我活动的触摸事件中。
public static int count=0;
int place=-300;
System.out.println("Count is:"+count);
if(count>0)
{
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, place, 0, 0);
ImageView imageView=(ImageView)findViewById(R.id.img1);
// MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
//marginLayoutParams.setMargins(0, 500, 0, 0);
imageView.setLayoutParams(lp);
place=place+10;
}
count++;
现在,仅在一次触摸事件中更改边距,而不是在每次触摸事件中更改。
所以我希望用户的每一次触摸都应该降低10像素
答案 0 :(得分:0)
如果对于代码上面的每个触摸事件执行...本地“place”变量将每次初始化为-300,因此place = place + 10将始终导致-290 px,请在类级别声明位置变量,如你的计数变量。希望,这对你有用。
答案 1 :(得分:0)
这里需要注意的是,每当触摸事件触发时,您都会将“计数”变量声明为0,以防您不知道为什么它不会增加。
您在这里有效地做的是在每个触摸事件中创建一个新的ImageView。如果您想要始终如一地处理该对象,则应该引用相同的ImageView,而不是每次想要使用它时都声明它。
尝试在Activity类的顶部声明它:
public ImageView imageView;
然后你可以在你的onCreate方法中实例化它:
imageView=(ImageView)findViewById(R.id.img1);
然后你可以在触摸事件中处理它,而不是每次都声明它:
if(count>0)
{
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, place, 0, 0);
// MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
//marginLayoutParams.setMargins(0, 500, 0, 0);
imageView.setLayoutParams(lp); // Note how we havent declared it above.
place=place+10;
}