屏幕上显示的图像-Android Studio

时间:2018-12-27 16:26:24

标签: java android android-studio

由于某些原因,当我将x坐标设置为screen_width-image_width时,图像显示在屏幕之外。 y坐标也会发生相同的情况。这是我的代码。

public class MainActivity extends AppCompatActivity {

    ImageView image;
    float height;
    float width;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        height = displayMetrics.heightPixels;
        width = displayMetrics.widthPixels;

        image.setImageResource(R.drawable.pigeon);
        image.setX(width - image.getMeasuredWidth());

在这种情况下,作为鸽子的图像不会显示在屏幕上。而且我希望它能显示出来,使鸽子的右边界触摸屏幕的右边界。

编辑:不是我只想定位图像并完成图像处理。我希望能够在应用运行时将图像移动到精确的坐标,例如在单击鼠标时。

1 个答案:

答案 0 :(得分:0)

一种将图像正确对齐的方法是使用XML布局。这是最简单的方法。

假设您在ImageView中有一个RelativeLayout,则可以如下使用“ layout_alignParentRight”属性:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/image_name"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        />
</RelativeLayout>

layout_alignParentEnd属性是layout_alignParentRight的从右到左语言脚本的替代方法。对于LinearLayout,可以使用layout_gravity属性。另外,请确保您的ImageViewwrap_content,而不是match_parent,在这种情况下,图像将扩展为充满整个ImageView

如果要以编程方式进行操作,可以按以下方式进行操作:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);
        imageView.setImageResource(R.drawable.pigeon);
        RelativeLayout.LayoutParams params = new 
        RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        imageView.setLayoutParams(params);
    }

在这里,我们通过添加align right规则然后为RelativeLayout设置该layout参数来将Image View的子视图右对齐。也可以使用LinearLayout功能为layout_gravity完成此操作。

我已经对该代码进行了示例图像测试。希望这能解决您的问题。