2013-03-18 105 views
14

我目前正在开发一个应用程序,它将允许用户在图像上添加贴纸(帽子,头发,眼镜等)。用户可以调整该贴纸的大小或可以旋转并移动。见图片。如何处理调整大小和旋转功能的贴纸?

enter image description here

我贴,但我怎样才能把它们原来的图像和移动/旋转/放大他们原始图像调整?

+0

我的工作类似的概念,你能告诉我你是怎么添加标签? – 2013-11-01 07:08:58

+0

@MehulJoisar,我发布我的答案我的朋友。我在图像上使用了多点触摸控制器。然后采取根布局的屏幕截图。这将结合两个图像。 :) – 2013-11-01 07:18:39

+0

你解决了这个问题吗? – MMakati 2013-11-26 10:34:36

回答

10

我发现了一个不错的结果,在http://code.google.com/p/android-multitouch-controller/。其中处理三合一设施。在Multi-Touch上,您可以平移图像,缩放图像,同时还可以旋转图像。你可以添加一些贴纸。

+0

我试过这个库的工作,但是当我添加第二个图像,然后第一个图像是不可聚焦的,即先前的图像不旋转或触摸。如何解决这个问题呢。 – 2016-07-02 17:51:14

1

要放大/缩小图像,你可以试试下面的代码:

yourImageView.setLayoutParams(new GridView.LayoutParams(newWidthImage, newHeightImage)); 
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 

希望这有助于。

+0

但我怎么能在imageview(原始图像持有人)上移动该图像? – 2013-03-18 11:46:00

+0

看看这篇文章http:// stackoverflow。com/questions/10834457/drag-and-drop-for-linearlayouts-child-views – 2013-03-18 14:18:38

0

查看他们试图通过箭头单击来实现拉伸图像的功能,同时删除它,还可以使用手势在屏幕上移动图像。

拖放图像还检查了演示DragDropImage

的您也可以下载它在博客中提到的源代码。

https://stackoverflow.com/a/22908379/3034199

16
+0

有用的链接。谢啦! – 2017-02-15 17:59:52

+0

有没有人用过这个? https://github.com/wuapnjie/StickerView它首先在谷歌搜索 – Donato 2017-05-30 00:49:00

+0

很棒。做得好。 – 2017-07-27 15:28:49

1

第一步:下载此链接Lib。 https://github.com/nimengbo/StickerView

第二:(StickerView,BubblePropertyModel,StickerPropertryModel.java在这三个文件中粘贴你的项目)。

第三步:下面的代码你过去的MainActivity文件:

注:mainlayout是(RelativeLayout的对象)

final StickerView stickerView21 = new StickerView(this); 
      stickerView21.setImageResource(R.drawable.fall_9); 

      stickerView21.setOperationListener(new StickerView.OperationListener() { 
       @Override 
       public void onDeleteClick() { 
        mViews.remove(stickerView21); 
        mainLayout.removeView(stickerView21); 
       } 

       @Override 
       public void onEdit(StickerView stickerView) 
       { 

       } 

       @Override 
       public void onTop(StickerView stickerView) { 
        int position = mViews.indexOf(stickerView); 
        if (position == mViews.size() - 1) { 
         return; 
        } 
        StickerView stickerTemp = (StickerView) mViews.remove(position); 

        mViews.add(mViews.size(), stickerTemp); 
       } 
      }); 


      RelativeLayout.LayoutParams l11= new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
      mainLayout.addView(stickerView21, l11); 
      mViews.add(stickerView21);