首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >适合宽度和scaleY = scaleX的Android图像缩放类型

适合宽度和scaleY = scaleX的Android图像缩放类型
EN

Stack Overflow用户
提问于 2013-11-08 17:58:34
回答 5查看 15.2K关注 0票数 0

我有一个带有背景图像的布局。图像宽度应与屏幕宽度(match_parent)相同。但它很丑陋,操作系统不会在高度上拉长画面。我听说过ImageView scaleType,所以我在ImageView中有背景图像,而不是布局背景,但我不能配置为我想要的。

如何设置为layout或ImageView以缩放图像(宽度)以适合屏幕的宽度,并使用相同的缩放比例缩放高度?

我想要图片中的第二个屏幕:

更新:

我试着从代码开始,但是我得到了0宽度+,我不敢相信这不能从带有ImageView的xml中完成。

代码语言:javascript
复制
    Drawable imageDrawable = getResources().getDrawable(imageResource);
    contentContainer.setBackgroundDrawable(imageDrawable);

    Rect rect = imageDrawable.getBounds();
    int originalWidth = rect.width();
    int originalHeight = rect.height();

    Display display = getActivity().getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();

    int height = originalHeight * (width/originalWidth);

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
    contentContainer.setLayoutParams(layoutParams);


    contentContainer.post(new Runnable() {

        @Override
        public void run() {
            contentContainer.setScaleY(contentContainer.getScaleX());

            Rect rect = contentContainer.getBackground().getBounds();
            int originalWidth = rect.width();
            int originalHeight = rect.height();

            Display display = getActivity().getWindowManager().getDefaultDisplay(); 
            int width = display.getWidth();

            int height = originalHeight * (width/originalWidth);

            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
            contentContainer.setLayoutParams(layoutParams);

        }
    }
EN

回答 5

Stack Overflow用户

发布于 2013-11-08 18:07:46

使用FrameLayout作为父对象,然后添加imageview作为子对象。

票数 0
EN

Stack Overflow用户

发布于 2013-11-08 18:26:19

将width match_parent和height fill_parent赋给imageView,另一种方法是应用属性try,这可能是它的工作。

票数 0
EN

Stack Overflow用户

发布于 2013-11-08 18:37:16

您可以在运行时通过测量设备的宽度来做到这一点:--

代码语言:javascript
复制
    super.onCreate(savedInstanceState);
    setContentView(<layout-resoure-id);
    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
    int imageSize = 0;
    if (width > height)
        imageSize = height;
    else
        imageSize = width;

    ImageView imageView = (ImageView) findViewById(R.id.imageView);
    imageView.getLayoutParams().width = imageSize;
    imageView.getLayoutParams().height = imageSize;
    imageView.setImageResource(R.drawable.pattu);

您的xml:--

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
       android:layout_height="fill_parent"
    android:layout_margin="10dp"
    android:orientation="vertical" >

   <ImageView
    android:id="@+id/imageView"
    android:layout_width="100dp"
    android:layout_height="100dp" 
    android:scaleType="fitXY"/>

  </LinearLayout>

尽情享受吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19856176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档