更改每个触摸事件的布局余量

时间:2011-07-25 08:53:41

标签: android layout margin ontouchevent

现在我想在每次触摸事件中更改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像素

2 个答案:

答案 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;

        }