마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프레임레이아웃 관련 질문입니다.

0 추천

프레임 레이아웃을 이용해서 표현하고싶은게 있는데 잘안됩니다 도와주세요.

이미지뷰 또는 웹뷰 위에 pointer(마우스커서모양) 이미지뷰를 겹쳐 보이게해서 터치하는 위치를 알려주고 싶은데 이미지뷰 또는 웹뷰를 터치하면  포인터가 이미지뷰 또는 웹뷰 아래로 들어가면서 pointer가 보이지 않습니다 이럴떈 어떻게 해결해야하나요?

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

    <ImageView
        android:id="@+id/pointer"
        android:layout_width="15dp"
        android:layout_height="20dp"
        android:src="@mipmap/pointer" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@mipmap/ic_launcher"/>

    </LinearLayout>

</FrameLayout>
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    ImageView imageView;
    FrameLayout frameLayout;
    View view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.pointer);
        frameLayout  = findViewById(R.id.container);
        imageView.setVisibility(view.INVISIBLE);

        frameLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()){
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_DOWN:
                    case MotionEvent.ACTION_MOVE:
                        imageView.setVisibility(view.VISIBLE);
                        imageView.setX(motionEvent.getX());
                        imageView.setY(motionEvent.getY());
                }
                if(motionEvent.getAction() == MotionEvent.ACTION_UP)
                    imageView.setVisibility(view.INVISIBLE);
                return true;
            }
        });
    }
}

 

 

이미지뷰에서는 해결을 하였는데 웹뷰에서는 해결을 못하였습니다. 웹뷰에 대해서 이미지뷰가 겹쳐보일 수 있는 방법을 알려주세요!

이진규 (340 포인트) 님이 2018년 1월 22일 질문
이진규님이 2018년 1월 22일 수정

1개의 답변

0 추천
 
채택된 답변
FrameLayout에 가장 마지막에 추가한 View가 가장 위로 올라오는데,

XML에서 Pointer ImageView를 가장 아랫쪽에 위치시켜도 안되나요?
디자이너정 (42,810 포인트) 님이 2018년 1월 22일 답변
이진규님이 2018년 1월 22일 채택됨
pointer ImageView를 가장 아랫쪽에 위치시켰더니 이미지뷰위에 나옵니다.
근데 웹뷰로 했을때는 웹뷰 위에 표시가 안됩니다.
웹뷰일때는 따로 해줘야 하는게 있나요?
...