现在,我想在每个触摸事件中更改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;

        }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top