在每个触摸事件中更改布局保证金
-
25-10-2019 - |
题
现在,我想在每个触摸事件中更改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 px
解决方案
如果上面的每个触摸事件执行...本地“位置”变量每次都将初始化为-300,因此plot = plot + 10始终将结果-290 px,请在班级级别上声明位置变量,例如您的计数变量。希望,这对您有用。
其他提示
一个注意事项,您每次触摸事件都会宣布“计数”变量为0,以防您想知道为什么它不会增加。
您在这里有效地做的是在每个触摸事件中创建一个新的ImageView。如果您想始终如一地处理该对象,则应参考相同的ImageView,而不是每次都想使用它时声明它。
尝试在您的活动类的顶部声明它:
public ImageView imageView;
然后,您可以在on Create方法中实例化:
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;
}
不隶属于 StackOverflow