android合并2张图片

时间:2012-05-23 15:53:42

标签: android xml merge

我正在努力工作几个小时但无法解决它。 我想在XML文件中合并2个图像 - 所以这将是我的形状的基本xml文件。 我希望这个形状包括一个png,它是一个框架,一个png是一个框架内的图片。那张照片会动态变化。

我已经尝试使用标记并构建我的形状,但是当我将它包含在我的主xml文件中时,它会失败,因为我只能以root身份使用merge。 尝试做同样的事情,但仍然没有得到我想要的......

我能做些什么才能合并这两个png,并且能够在png内部设置内部png位置?

EDITED: 一些代码:     

<ImageView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent"             
    android:src="@drawable/userprofilepicture"
    android:scaleType="fitXY" 
    android:contentDescription="@string/SmallLogo" />


<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="@string/SmallLogo"
    android:scaleType="fitXY"
    android:padding="30dp"
    android:src="@drawable/questionmark" />

</FrameLayout>

这是我的框架和内部pic xml源.. 在图形布局中查看它看起来不错。 当它包含在我的主xml文件中时,从某种程度上它会翻转图像...... ???

这是我的主要xml的一部分:

        <TableRow>

        <ImageView
            android:layout_gravity="center_vertical"
            android:layout_marginTop="2.5dp"
            android:contentDescription="@string/SmallLogo"
            android:src="@drawable/logosmall" />

        <ImageView
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="2.5dp"
            android:contentDescription="@string/slogen"
            android:src="@drawable/slogen" />

        <include layout="@drawable/userprofilepicture"
            android:layout_width="30dp"
            android:layout_height="30dp"/>

    </TableRow>

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用9-patch和自定义布局?这是一个example

答案 1 :(得分:0)

创建FrameLayout自定义类。该类将具有framelayout的所有XML属性。

com.package.example;

public class PictureFrame extends FrameLayout {

    public PictureFrame(Context c, AttributeSet attrs) {
        super(c, attrs);
        LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //This adds the image views as you've styled them in the XML file
        inflater.inflate(R.layout.myFrameImages, this);
    }

    public void setInnerImage(int resource) {
        ImageView ivInner = (ImageView) findViewById(R.id.innerImage);
        ivInner.setImageResource(resource);
    }

}

您的XML文件看起来像

<ImageView
     android:src="@drawable/myFrameImage"
     android:layout_height="fill_parent"
     android:layout_width="fill_parent"
     android:scaleType="fitXY"/>
<ImageView
     android:src="@drawable/myInnerImage"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:scaleType="fitXY"
     android:layout_margin="10dp"
     android:id="@+id/innerImage"/>

您还可以在XML中声明它时创建自己的XML属性,因此可以直接在xml中声明内部图像。如果您需要帮助,您必须与我联系或发布其他问题。