Intereting Posts
Android-приложение перезапускается автоматически после сбоя Наиболее точное местоположение gps мобильного устройства Реагировать на нативный: выбираемый вид списка разделов дает ошибку WebView clearHistory () в функции web-браузера canGoback ()? Как скрыть панель действий / панель инструментов при прокрутке вниз в веб-представлении Android listview пустое сообщение с заголовком Как сбросить рейтинги Google Play Games до публикации? Распределение пространства LinearLayout Android «Управление приложениями» показывает мое имя приложения как имя моего пакета вместо дружественного имени Перейдите с локального сервера xampp на онлайн-сервер Изображение Android, которое может поддерживать как 5.4 "FWVGA mdpi, так и 3.2" QVGA mdpi? Как проверить, запущен ли IntentService Рисование растровых изображений быстрее на холсте Android или OpenGL Как изменить код версии в AndroidManifest.xml с помощью Cordova 3.6.4 Google Cloud Messaging через протокол XMPP (сервер, работающий с PHP и XMPPHP). Как это работает?

Изображение снижается на краю экрана

Если я хочу переместить позицию моего изображения в то место, где часть правой части изображения будет проходить мимо видимого экрана, изображение имеет тенденцию к сжатию, и все изображение имеет тенденцию оставаться на краю экрана, то же самое может быть Сказал, что если я опускаю изображение, чтобы пройти мимо нижней части экрана, изображение сжимается и никогда не проходит мимо нижнего края экрана,

Но если я перемещаю позицию изображения вверх или слева, размер изображения не увядает, и изображение проходит мимо экрана, как я этого хочу, мне любопытно, есть ли у кого-нибудь советы, как я могу исправить эту проблему. Thankyou

mainLayout = (ViewGroup)findViewById(R.id.id_layout); deviceScreenSize = new Point(); thisContext = this; mainDisplay = getWindowManager().getDefaultDisplay(); mainDisplay.getSize(deviceScreenSize); offsetX = (deviceScreenSize.x / 320.0f); offsetY = (deviceScreenSize.y / 568.0f); mainIMG = new ImageView(this); mainIMG.setImageDrawable(getResources().getDrawable(R.drawable.myimg)); SetPos(0, 0, 320, 568); mainIMG.setLayoutParams(layoutPositioner); mainLayout.addView(mainIMG); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } public void SetPos(float x, float y, float width, float height) { layoutPositioner = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); layoutPositioner.topMargin = (int)(y * offsetY); layoutPositioner.leftMargin = (int)(x * offsetX); layoutPositioner.width = (int)(width * offsetX); layoutPositioner.height = (int)(height * offsetY); } public void SetPosWithoutOffset(float x, float y, float width, float height) { layoutPositioner = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); layoutPositioner.topMargin = (int)(y); layoutPositioner.leftMargin = (int)(x); layoutPositioner.width = (int)(width); layoutPositioner.height = (int)(height); } 

Вот наглядный пример проблемы ОПИСАНИЕ

Это происходит потому, что вы обрабатываете только левое и верхнее поля при позиционировании в методе SetPos() :

 layoutPositioner.topMargin = (int)(y * offsetY); layoutPositioner.leftMargin = (int)(x * offsetX); 

Итак, чтобы решить эту проблему, вы должны обрабатывать все направления следующим образом:

 // first get screen width and height DisplayMetrics metrices = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(metrices); int windowWidth = metrices.widthPixels; int windowHeight = metrices.heightPixels; //then set your margins int x_cord = (int)(x * offsetX); int y_cord = (int)(y * offsetY); layoutPositioner.topMargin = y_cord; layoutPositioner.leftMargin = x_cord; layoutPositioner.bottomMargin = windowHeight - (y_cord - your_image.getHeight()); layoutPositioner.rightMargin= windowWidth - (x_cord - your_image.getWidth());