安卓:用滚动按钮(水平和垂直)ImageView的叠加 [英] Android: Scrollable (horizontal and vertical) ImageView with Buttons overlayed

查看:207
本文介绍了安卓:用滚动按钮(水平和垂直)ImageView的叠加的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实施一个活动,你唯一看到的是一个大的图像,可以水平滚动和vertically.On顶一下,像我想要显示的按钮,可以点击并触发特定操作(如创建意图启动一个新的活动)。

I want to implement an activity where the only thing you see is a big image, which can be scrolled horizontally and vertically.On Top of that image I want to display buttons, that can be clicked and trigger certain actions (like creating an intent to start a new activity).

首先,我在想一个滚动型,具有的FrameLayout作为一个孩子。该的FrameLayout可以有图像作为背景,可以有按钮的孩子的。因为我知道我的按钮的位置正是我可以把他们与绝对坐标。这是我第一次code:

First I was thinking about a ScrollView, that has a FrameLayout as a child. The FrameLayout could have the image as a background and can have the buttons as childs. Because I know the position of my buttons exactly I could place them with absolute coordinates. Here is my first code:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <FrameLayout
        android:layout_width="1298px"
        android:layout_height="945px"
        android:background="@drawable/myimage">

        <Button  
            android:id="@+id/mybutton"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_x="115px"
            android:layout_y="128px"/>

    </FrameLayout>
</ScrollView>

问题是,你只能垂直滚动滚动型。 Horizo​​ntalScrollView不解决问题,导致它仅在一个方向滚动无论是。我能以某种方式混合使用它们?是否有另一种解决方案?

The Problem is, that you can only scroll a ScrollView vertically. HorizontalScrollView doesn't solve the Problem, cause it only scrolls in one direction either. Can I mix them somehow? Is there another solution?

我发现了计算器,那里的人把图像转化为WebView中一些类似的主题,并得到horizo​​nzal /垂直滚动免费(<一href=\"http://stackoverflow.com/questions/2278625/android-imageview-scrolling-to-display-full-high-quality-image\">here).或有人把图像中的ImageView,并给了一个ImageView的onTouchListener处理滚动(这里 )。用这两种方法的问题是,我无论哪种方式,我不认为你可以把按钮上的图像,上面这正是我需要做的。

I found some similar threads on stackoverflow, where people put the image into a WebView and get horizonzal/vertical scrolling for free (here). Or someone put the image in an imageview and gave the imageview an onTouchListener to handle scrolling (here). The Problem with both ways is, that I either way I dont think you can put Buttons on top of the image, which is what I need to do.

我会非常AP preciate如果有人帮助我。

I would very appreciate if someone help me out.

推荐答案

使用(德precated!)AbsoluteLayout,并给予它和onTouchListener解决我的问题:

Using the (deprecated!!!) AbsoluteLayout and giving it and onTouchListener solved my problem:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:src="@drawable/myImage"
        android:layout_width="1298px"
            android:layout_height="945px"
            android:layout_x="0px"
        android:layout_y="0px" />
    <Button  
        android:id="@+id/myButton"
        android:text="1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_x="50px"
        android:layout_y="300px"
        android:tag="1"/>

</AbsoluteLayout>




private float mx;
    private float my;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.layout);



        final Button button = (Button)findViewById(R.id.myButton);
        button.setOnClickListener (new View.OnClickListener(){
             // OnClickAction
});


        final AbsoluteLayout switcherView = (AbsoluteLayout) this.findViewById(R.id.myLayout);

        switcherView.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View arg0, MotionEvent event) {

                float curX, curY;

                switch (event.getAction()) {

                    case MotionEvent.ACTION_DOWN:
                        mx = event.getX();
                        my = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        curX = event.getX();
                        curY = event.getY();
                        switcherView.scrollBy((int) (mx - curX), (int) (my - curY));
                        mx = curX;
                        my = curY;
                        break;
                    case MotionEvent.ACTION_UP:
                        curX = event.getX();
                        curY = event.getY();
                        switcherView.scrollBy((int) (mx - curX), (int) (my - curY));
                        break;
                }

                return true;
            }
        });

    }

这篇关于安卓:用滚动按钮(水平和垂直)ImageView的叠加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆