在android中的另一个图像上添加图像

时间:2017-06-16 06:26:06

标签: android image canvas imageview mapping

在我的应用程序中,我想在另一个图像上添加图像,当用户放大图像时,它也应该移动,就像谷歌地图一样。 请看下面的图像,我想动态设置标志

enter image description here

请建议更好的方法来完成此任务。

2 个答案:

答案 0 :(得分:0)

解决方案(XML):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/t" />
    <item android:drawable="@drawable/tt" />
</layer-list>

解决方案(动态):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="maxdorid.ir.MainActivity">


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srcCompat="@mipmap/ic_launcher"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/imageView" />
</RelativeLayout>


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Resources r = getResources();
        Drawable[] layers = new Drawable[2];
        layers[0] = r.getDrawable(R.drawable.ic_alarm_off_black_24dp);
        layers[1] = r.getDrawable(R.drawable.ic_apps_black_24dp);
        LayerDrawable layerDrawable = new LayerDrawable(layers);
        ImageView imageView= (ImageView) findViewById(R.id.imageView);
        imageView.setImageDrawable(layerDrawable);
    }
}

如果您使用多个图片:

private Bitmap overlay(Bitmap bmp1, Bitmap bmp2,int x,int y) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, new Matrix(), null);
    canvas.drawBitmap(bmp2, x,y, null);
    return bmOverlay;
}

答案 1 :(得分:0)

使用相对布局作为背景并将图像作为相对布局的组件放置,使用相对布局参数调整屏幕上的图像位置。您可以对相对布局本身应用缩放