Отображение изображения с экрана - Android studio - PullRequest
0 голосов
/ 27 декабря 2018

По какой-то причине, когда я устанавливаю координату 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 голосов
/ 28 декабря 2018

Одним из способов выравнивания изображения по праву является использование макета 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.Кроме того, убедитесь, что ваш ImageView равен wrap_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);
    }

Здесь мы выравниваем дочерний вид RelativeLayout вправо, добавляя правило выравнивания вправо и затем устанавливая этот параметр макета для Image View.Это также может быть сделано для LinearLayout с использованием функции layout_gravity.

Я протестировал этот код для примера изображения.Надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...