如何在安卓系统中弹出部分图像

10

我想展示图片的某一部分,就像漫画书一样。我有一张像这样的图片:

这是实际图片

当我点击图片时,会显示出其中的一部分,就像这样:

点击图片后显示的第二张图片

我想要展示这种效果。为了实现这个过程,我创建了一个包含主图片部分的图像的zip文件。我已经按照序列显示了每个图像,但我的问题是如何获取实际图片中任意部分的单击事件并像第二屏幕那样显示它。

我无法获取图片部分ID,所以该如何获取这部分的图片ID呢?

所以请帮帮我,我被卡住了。


和点击Facebook上的图片一样,它会在新屏幕上弹出全尺寸图像。 - Paresh Mayani
@PareshMayani 但是如何管理哪个点击已完成。每个单独的图像都不是我这样组合的。 - Zala Janaksinh
2个回答

1

如果您有包含主要图像部分的存档,那么这意味着您是手动创建它们的,对吗?因此,您的漫画书查看器仅适用于手动创建的内容。

如果是这样,那么制作某种配置文件(例如基于xml或属性文件)来包含每个部分的大小和位置就没有问题了。

之后,您可以处理 MotionEvent并通过配置中的坐标检测部件的ID。

您还可以通过即时裁剪图像来改进应用程序。这并不困难。

例如:

您的图像在此处(page1.png):

--------------------------------
|                 |            |
|                 |            |
|                 |     2      |
|        1        |            |
|                 |            |
|                 |------------|
|                 |            |
|-----------------|            |
|                 |     4      |
|                 |            |
|                 |            |
|                 |------------|
|        3        |            |
|                 |            |
|                 |     5      |
|                 |            |
|                 |            |
--------------------------------

您的简单配置(page1.cfg):
# Parts description
# id=x,y;w,h
1=0,0;18,9
2=19,0;13,7
3=0,10;18,11
4=19,8;13,7
5=19,15;13,6

您的邮编:

page1.png
page1-1.png
page1-2.png
page1-3.png
page1-4.png
page1-5.png
page1.cfg
...

谢谢您的回答,但是如何管理整本书,它不仅仅是单页,而是一本书。那么我该如何检测呢? - Zala Janaksinh
您可以动态检测页面的部分。有许多算法可供选择。首先,您应该检测您的背景。之后,您可以使用启发式方法检测页面上的垂直和水平分隔符。 - Oleksii K.
我认为提取边缘和部件是两个不同的任务。而且这是一个非常复杂的任务。实际上,您不需要裁剪页面。您可以检测关键点并将它们用作偏移量。因此,您的位图实例将是单一的,并且您将通过偏移量来移动它们。 - Oleksii K.

0

你可以用一个技巧解决这个问题。

在布局中设置带透明背景的按钮。

将按钮的OnclickListener设置为显示您想要的弹出窗口,放在您的类活动中。

您还可以通过可见/不可见功能管理按钮单击事件,以满足您的需求。

编辑

您的XML将如下所示。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/YOUR_IMAGE" >

    <Button
        android:id="@+id/btn_invisible"
        android:layout_width="85dp" 
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="18dp"
        android:background="@android:color/transparent" />

</RelativeLayout>

并且在您的Activity类的OnCreate()方法内部。

   @Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    setContentView(R.layout.help_1);
    btn_invisible = (Button) findViewById(R.id.btn_invisible);
    btn_invisible.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    if (v == btn_invisible) {
        //Whatever Code you want to Use for Show Popups

    }

我不确定,但你可以试一试。


但是请看图片,它看起来不同,如何随机设置图像按钮?我知道如何创建动态布局,但如何将此按钮存储在图像实际部分下面。 - Zala Janaksinh
我已经编辑了我的答案,并附上了代码的描述。如果这对你有帮助,请告诉我。 - Bhavesh Patadiya
我认为这是一些想法,我会尝试后再给您回复,亲爱的。 - Zala Janaksinh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接