【发布时间】:2015-09-01 08:06:47
【问题描述】:
我正在开发一个应用程序,用户可以在其中移动他的图像在屏幕内,然后保存它。
问题是在活动开始时将位图定位在 ImageView 中。
这是 XML:
<RelativeLayout
android:id="@+id/image_content_holder"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/top_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:scaleType="matrix"
android:gravity="center|center_vertical"
android:layout_gravity="center|center_vertical"/>
</RelativeLayout>
我正在使用 onTouch 移动 ImageView(嗯,不是 ImageView,而是它的矩阵),并且效果很好。
@Override
public boolean onTouch(View v, MotionEvent event)
{
ImageView view = (ImageView) v;
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
mode = DRAG;
start.set((int) event.getX(), (int) event.getY());
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);
}
break;
}
view.setImageMatrix(matrix);
return true;
}
问题是Bitmap在Activity开始的位置。它在 Top|Left 而不是 Center 上对齐。像这样:
谁能帮我把它集中在 ImageView 开始?
【问题讨论】:
标签: android matrix bitmap imageview