我想展示图片的某一部分,就像漫画书一样。我有一张像这样的图片:
当我点击图片时,会显示出其中的一部分,就像这样:
我想要展示这种效果。为了实现这个过程,我创建了一个包含主图片部分的图像的zip文件。我已经按照序列显示了每个图像,但我的问题是如何获取实际图片中任意部分的单击事件并像第二屏幕那样显示它。
我无法获取图片部分ID,所以该如何获取这部分的图片ID呢?
所以请帮帮我,我被卡住了。
我想展示图片的某一部分,就像漫画书一样。我有一张像这样的图片:
当我点击图片时,会显示出其中的一部分,就像这样:
我想要展示这种效果。为了实现这个过程,我创建了一个包含主图片部分的图像的zip文件。我已经按照序列显示了每个图像,但我的问题是如何获取实际图片中任意部分的单击事件并像第二屏幕那样显示它。
我无法获取图片部分ID,所以该如何获取这部分的图片ID呢?
所以请帮帮我,我被卡住了。
如果您有包含主要图像部分的存档,那么这意味着您是手动创建它们的,对吗?因此,您的漫画书查看器仅适用于手动创建的内容。
如果是这样,那么制作某种配置文件(例如基于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
...
你可以用一个技巧解决这个问题。
在布局中设置带透明背景的按钮。
将按钮的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
}
我不确定,但你可以试一试。