카테고리 보관물: Programming

안드로이드에서 화면 크기 구하기

개발을 하다보면 핸드폰 화면 크기를 구해서 유기적으로 배열을 바꿔야 할 때가 있습니다.

 

그때를 위한 코드!!

 

그냥 Ctrl + C, V 하시고 함수 호출하시면 됩니다.

 

public int getLcdSizeWidth()

{

return ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();

}   //가로 크기

    
 

public int getLcdSizeHeight()

{

return ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();

}    // 세로 크기

[HTML5]메시지 전송하기

이것은 HTML5 기술이라기 보단 JAVA Script 기능이라고 보는편이 나을것 같은 기능입니다.

 
 

Sender.html 파일에서 receiver.html 파일로 데이터를 보내서 받는 기능인데요.

 
 

중요 함수로 postMessage(내용, 주소)가 있습니다.

 
 

위 함수로 데이터를 보내면

 
 

receiver에서 addEventListener를 통해 데이터를 받아 처리합니다.

 
 

이런 식으로 데이터를 페이지끼리 데이터를 주고받을 수 있는데

 
 

목표가 정확할 경우 주소항목에 값을 쓰면 되는데

 
 

이 경우 사파리와 오페라만 작동하는 문제가 있습니다.

 
 

이유는 저도 잘 모르겠지만 밑에 나올 결과값을 보시면

 
 

Origin 인자값이 서로 다른 것을 볼 수 있습니다.

 
 

얕은 지식으로 조심스레 추측을 하자면 위의 이유 때문이 아닌가 싶습니다.

 
 

 
 

그래서 다른 방법으로

 
 

iframe의 src 부분에 목표 주소를 쓰고

 
 

postMessage에서 주소 부분에 을 사용하면

 
 

postMessage(보낼 내용“*”);

 
 

어느 브라우저에서나 잘 작동 됩니다.

 
 

위의 “*”은 iframe의 src 이하의 URL이 무엇이든 상관없이 데이터를 전달 하라는 의미입니다.

 
 

그럼 결과 값부터 보여드릴게요.

 
 

참고로 맨 아래 file… 부분은 메시지를 보내는 경로를 나타냅니다.

 
 


Figure 1. 크롬

 
 


Figure 2. 파이어폭스

 
 


Figure 3. 사파리

 
 


Figure 4. 오페라

 
 


Figure 5. Explorer

 
 

 
 

이번엔 과정이 앞의 것에 비해 간단해서 딱히 설명할 소스가 없네요.

간단히 설명하자면

  1. 메시지를 텍스트 박스에 입력 후
  2. 전송을 누르면
  3. Send() 함수가 실행되서 텍스트 박스 내용을 iframe 주소로 전송하고,
  4. Iframe에 나오는 html 파일은 메시지를 받아서 Listener를 실행시키고
  5. 미리 정의된 msgs 개체의 위치에 메시지를 띄웁니다.

 
 

<!DOCTYPE html>

<html>

<head>

<title>Cross-window Messaging</title>

 
 

<script type=“text/javascript”>

    function Send() {

        var msg = document.getElementById(“msg”).value;

        var frame = document.getElementById(“iframe”);

        var temp = document.getElementById(“temp”);

        var location = window.location;

        var protocol = location.protocol;

        var host = location.host;

 
 

        if(frame.contentWindow.postMessage)

        {

            frame.contentWindow.postMessage(msg, “*”);

        temp.innerHTML = “<h1>” + protocol + “//” + host + “</h1>”;

        }

        else

        {

            temp.innerHTML = “<h1> Your Brower is does not support the postMessage method!</h1>”;

        }

    }

</script>

 
 

</head>

 
 

<body>

    <h1>Cross-Window Messaging</h1>

    <iframe id=“iframe” src=“07_MsgChild.html” height=“300” width=“500”>

    </iframe>

    <br>

    <br> Send Message :

    <input id=“msg” type=“text”>

    <input type=“button” onclick=“Send()” value=“Send”>

 
 

    <div id=“temp”>

</body>

</html>

Figure 6. 07_MsgParent.html

 
 

<!DOCTYPE html>

 
 

<html>

<head>

<title>Child</title>

</head>

 
 

<script type=“text/javascript”>

    window.addEventListener(“message”, loader, false);

    function loader(e) {

        document.getElementById(“msgs”).innerHTML =

                “data : “ + e.data +

                “<br>origin : “ + e.origin +

                “<br>source : “ + e.source +

                “<br>lastEventId : “ + e.lastEventId;

    }

</script>

 
 

<body>

    <div id=“msgs” syle=“width:400px; height:250px”></div>

</body>

</html>

Figure 7. MsgChild.html

 
 

참고 사이트 : http://help.dottoro.com/ljjqtjsj.php