如何固定android中ImageView的位置
怎么才能把ImageView的图片固定在一个位置上呢,当我我按下一张,就换成下一张图片,可是下一张图片大小和前一张不一样,所以位置也会发生变化。...
怎么才能把ImageView的图片固定在一个位置上呢,
当我我按下一张,就换成下一张图片,可是下一张图片大小和前一张不一样,所以位置也会发生变化。 展开
当我我按下一张,就换成下一张图片,可是下一张图片大小和前一张不一样,所以位置也会发生变化。 展开
1个回答
推荐于2016-05-22
展开全部
基本都是采用继承ImageView,并提供setLocation方法,其实质是调用ImageView没有开放的setFrame方法来设置位置。通常写法如下:
class MyView extends ImageView
{
public MyView(Context context,float x,float y)
{
super(context);
setBackgroundResource(R.anim.blast);
}
// 定义一个方法,该方法用于控制MyView的显示位置
public void setLocation(int top, int left)
{
this.setFrame(left, top, left + 40, top + 40);
}
}
这样写是没有问题的,但我遇到一个问题,当ImageView更换图片(setImageBitmap)后,第一次总是出现在屏幕的左上角。这个问题我在百度上查了,没有任何人给出了答案。于是花了点时间来研究,终于有了办法。当设置setImageBitmap后,如果要改变ImageView出现的位置,必须采用设置margin的方法,
//在FrameLayout中,将view移动到指定位置。
private void moveLocation(View view, float curX, float curY) {
LayoutParams params = (LayoutParams)view.getLayoutParams();
params.leftMargin = (int) (curX);
params.topMargin = (int) (curY);
view.setLayoutParams(params);
}
同时,view的布局方式必须要设置android:layout_gravity,例如android:layout_gravity="left|top",其实设置为什么值并不重要,但一定要设置。之后,就可以调用setLocation来设置ImageView的位置了。
class MyView extends ImageView
{
public MyView(Context context,float x,float y)
{
super(context);
setBackgroundResource(R.anim.blast);
}
// 定义一个方法,该方法用于控制MyView的显示位置
public void setLocation(int top, int left)
{
this.setFrame(left, top, left + 40, top + 40);
}
}
这样写是没有问题的,但我遇到一个问题,当ImageView更换图片(setImageBitmap)后,第一次总是出现在屏幕的左上角。这个问题我在百度上查了,没有任何人给出了答案。于是花了点时间来研究,终于有了办法。当设置setImageBitmap后,如果要改变ImageView出现的位置,必须采用设置margin的方法,
//在FrameLayout中,将view移动到指定位置。
private void moveLocation(View view, float curX, float curY) {
LayoutParams params = (LayoutParams)view.getLayoutParams();
params.leftMargin = (int) (curX);
params.topMargin = (int) (curY);
view.setLayoutParams(params);
}
同时,view的布局方式必须要设置android:layout_gravity,例如android:layout_gravity="left|top",其实设置为什么值并不重要,但一定要设置。之后,就可以调用setLocation来设置ImageView的位置了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询