안드로이드 for 문

프로그래밍/Android (Java)|2015. 11. 27. 17:04
반응형

자바 반복문(Java repetitive statement) 예제

for문은 반복된 명령을 수행할 때 사용됩니다.

 

예제소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class h5bak_for {
    public static void main(String[] args) {
        int arrNum[] = { 11, 22, 33, 44, 55, 66 };
        for (int i = 0; i <= 10; i++) {
            System.out.println("출력 : " + i);
        }
        System.out.println("출력 끝");
        System.out.println("============================");
  
        for (int num : arrNum) { // 배열의 내용을 출력할 때 향상된 for문으로 간단하게 출력
            System.out.println("향상된 for : " + num);
        }
    }
}


실행결과


[출처] http://h5bak.tistory.com/179


반응형

댓글()

배열 부분 복사

프로그래밍/Android (Java)|2015. 11. 27. 16:37
반응형

import java.util.Arrays;

import java.util.ArrayList;



Use copyOfRange method from java.util.Arrays class:

int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);

startIndex is the initial index of the range to be copied, inclusive.
endIndex is the final index of the range to be copied, exclusive. (This index may lie outside the array)

E.g.:

   //index   0   1   2   3   4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2);          // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4);          // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)



[출처] http://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java

반응형

댓글()

기본 플레이어로 연속 재생기능 만들기

프로그래밍/Android (Java)|2015. 11. 27. 08:35
반응형

이번 프로젝트에서 사용한 연속플레이어 입니다.

플레이어에 종료 리스너를 등록하여 종료 직전에 남아있는 동영상을 체크하고 있으면 다음동영상을 재생하는 간단한 코드입니다.

해당 테스트코드를 가지고 기능을 좀더 추가하고 예외처리를 했는데요. 아래에 있는 코드만으로도 실행은 가능합니다.

import java.util.ArrayList;

import android.app.Activity;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Bundle;

import android.widget.MediaController;

import android.widget.VideoView;


public class TestPlayerActivity extends Activity {

private static final String MOVIE_URL ="http://www.archive.org/download/Unexpect2001/Unexpect2001_512kb.mp4";

private ArrayList<String> array = new ArrayList<String>();

private int count;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//주소를 어레이에 추가합니다.

            array.add("http://www.archive.org/download/Unexpect2001/Unexpect2001_512kb.mp4");

            array.add("http://www.archive.org/download/Unexpect2001/Unexpect2001_512kb.mp4");

            array.add("http://www.archive.org/download/Unexpect2001/Unexpect2001_512kb.mp4");

            count = 0;

            setContentView(R.layout.main);

            final VideoView videoView = (VideoView) findViewById(R.id.VideoView);

            MediaController mediaController = new MediaController(this);

            mediaController.setAnchorView(videoView);

            //비디오 uri등록 

            Uri video = Uri.parse(MOVIE_URL);

            videoView.setMediaController(mediaController);

            videoView.setVideoURI(video);

            videoView.requestFocus();

            //비디오 종료시 실행되는 리스너

           MediaPlayer.OnCompletionListener mComplete = newMediaPlayer.OnCompletionListener() {

                          @Override

                           public void onCompletion(MediaPlayer mp) {

                                       //재생할 비디오가 남아있을 경우
                                        if
 (array.size() > count) {

                                            Uri video1 = Uri.parse(array.get(count).toString());

                                            count++;

                                            videoView.setVideoURI(video1);

                                            videoView.start();

                                            }

                                       // TODO Auto-generated method stub

                                   }

                         };

                    //리스너 등록 
                    videoView.setOnCompletionListener(mComplete);

                    //비디오 시작 
                    videoView.start();

             }

}

 
xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout android:id="@+id/LinearLayout01"

 android:layout_height="fill_parent"xmlns:android="http://schemas.android.com/apk/res/android"

 android:layout_width="fill_parent" android:orientation="vertical">


 <VideoView android:layout_height="fill_parent"

  android:layout_width="fill_parent" android:id="@+id/VideoView"></VideoView>

</LinearLayout>


[출처] http://whitegom.tistory.com/24



반응형

'프로그래밍 > Android (Java)' 카테고리의 다른 글

안드로이드 for 문  (0) 2015.11.27
배열 부분 복사  (0) 2015.11.27
캐쉬, 쿠키 지우고 종료  (0) 2015.11.25
레이아웃 요소 숨기기  (0) 2015.11.20
webview 뒤로가기 설정  (0) 2015.11.20

댓글()

캐쉬, 쿠키 지우고 종료

프로그래밍/Android (Java)|2015. 11. 25. 17:10
반응형

1. 떠도는 캐시 삭제 하는 소스에 쿠키 삭제 하는 부분을 추가 하였다. 


import android.webkit.CookieManager;

import android.webkit.CookieSyncManager;


    @Override 
    public void onDestroy() { 
        super.onDestroy(); 
        clearApplicationCache(null); 
        android.os.Process.killProcess(android.os.Process.myPid() ); 
    } 
    
    public void clearApplicationCache(java.io.File dir){ 
        if(dir==null) dir = getCacheDir(); 
        if(dir==null) return; 
        java.io.File[] children = dir.listFiles(); 
        try{ 
            // 쿠키 삭제 
            CookieManager cookieManager = CookieManager.getInstance(); 
            cookieManager.removeSessionCookie(); 
            
            for(int i=0;i<children.length;i++) 
                if(children[i].isDirectory()) 
                    clearApplicationCache(children[i]); 
                else children[i].delete(); 
        } 
        catch(Exception e){} 
    }

 

2. 핸드폰에서 캐시는 0byte로 깨끗해 지는데 데이터에 찔끔 남는 데이터는 뭔고 ….

 

[출처] http://xyunsikx.tistory.com/23

반응형

댓글()

레이아웃 요소 숨기기

프로그래밍/Android (Java)|2015. 11. 20. 17:57
반응형

android:visibility="gone"


위 옵션을 주면 동작은 하지만 화면에만 나타나지 않습니다.


반응형

댓글()

webview 뒤로가기 설정

프로그래밍/Android (Java)|2015. 11. 20. 08:26
반응형

import android.view.KeyEvent;


@Override

public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
           if(webView.canGoBack()){
            webView.goBack();
           }else{
            webView.clearCache(false);
               finish();
           }
           return true;
       }
       return super.onKeyDown(keyCode, event);
}


파랑색 글자는 사용하는 명칭(?)으로 잘 맞추어 사용한다. 


[출처] 나랑블루 (http://newhouse.tistory.com/268)

 

반응형

댓글()

WebView에 배경이미지 적용하기

프로그래밍/Android (Java)|2015. 11. 19. 10:01
반응형

기본적인 WebView의 background는 white로 지정되어 있는것 같습니다.

따라서 webview의 background color를 0 또는 Color.TRANSPARENT 로 세팅하고

setBackgroundResource로 이미지를 지정해주시면, 설정된 이미지로 배경화면이 바뀐것을 확인할 수 있습니다.

예제 코드입니다.

즐프하세요~~

 

[출처] 스태커 (http://dasin.freeofsky.com/archives/12)

 

 

Color.BLACK 과 같이 대문자로 컬러를 사용해야 하며, 몇가지 정해진 색상밖에 사용이 불가능합니다.

반응형

댓글()

videoview 종료시 activity 종료 및 반복재생 방법

프로그래밍/Android (Java)|2015. 11. 19. 08:18
반응형

import android.media.MediaPlayer.OnCompletionListener;

 

(생략)

 

videoview.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {

 

         onBackPressed();  // 동영상 재생 종료시 activity 를 종료하고자 할때 사용


        // 반복을 원할 경우 바로 윗줄 제외하고 여기에서 Intent 로 VideoViewActivity 를 재호출

    }
});

 

 

반응형

댓글()

웹에서 액티비티 호출하기

프로그래밍/Android (Java)|2015. 11. 19. 08:12
반응형

웹앱을 만들다보면, 웹에서 안드로이드 앱의 특정 액티비티를 호출해야 하는 경우가 종종 발생한다. 

오늘은 HTML의 링크를 클릭했을 때, 안드로이드 액티비티를 호출하는 간단한 방식을 정리해 보도록 한다. 


웹뷰를 작성하는 코드는 안드로이드 웹뷰(WebView) 사용하기 를 참고하기 바란다. 

이 소스에 HTML 링크를 처리하는 부분을 추가할 것이기 때문이다. 


웹에서 액티비티 호출 방식

웹에서는 HTML의 <a> 태그를 활용해서 액티비티를 호출한다. 


<a href="app://...">Call Activity</a>

이런 형태로 호출하고, 안드로이드 액티비티에서 URL 로딩하는 부분에서 app://로 시작하는 것을 별도로 처리하면 된다. 


필요에 따라서 app:// 이후 문자열을 가지고 특정 파라미터를 전달하는 형태도 가능할 것이다. 


웹 HTML 소스

간단한 테스트를 위해서 app:// 링크를 가진 HTML 파일을 하나 생성한다. 

 

 
       <a href="app://application">Call Android Activity </a>    


웹에서 실행 후, 링크를 눌러보면 아무런 반응을 하지 않는다. 

이미지


안드로이드 코딩

안드로이드 웹뷰(WebView) 사용하기 에서 만든 MiniWebActivity에 관련 내용을 추가해 보도록 한다. 

웹의 링크를 받아서 다른 액티비티를 실행할 것이므로 인텐트(intent)를 사용해야 한다. 

이를 위해 ApplicationContext를 알아야 할 필요가 있다. 

 

 
public class MiniWebActivity extends Activity {

    private WebView mWebView;
    public Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mini_web);
        mContext = this.getApplicationContext();

        mWebView = (WebView)findViewById(R.id.webView);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://www.word.pe.kr/home/callactivity.html");
        mWebView.setWebViewClient(new WebViewClientClass());
    }


5번째 줄에 mContext 변수를 선언하고, 11번째 줄에서 getApplicationContext()로 할당했다. 


이제 URL 로딩에서 app://으로 시작하는 부분을 처리해야 한다. 

안드로이드 웹뷰(WebView) 사용하기 에서 WebViewClient를 상속받아서 WebViewClientClass를 inner class로 구현한 것을 기억할 것이다. 

이 클래스의 URL 로딩을 오버라이드한 메소드에서 app://을 처리하면 된다. 

 

 
    private class WebViewClientClass extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("app://")) {
                Intent intent = new Intent(mContext.getApplicationContext(), MainActivity.class);
                startActivity(intent);
                return true;
            }
            else {
                view.loadUrl(url);
                return true;
            }
        }
    }


4~8번째 줄을 보면 URL에서 app://으로 시작할 경우, 

인텐트를 사용해서 MainActivity를 실행하도록 설정되어 있다. 

 


 


전체 소스를 살펴보면 다음과 같다. 

 

 
package kr.co.acronym.mini;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MiniWebActivity extends Activity {


    private WebView mWebView;
    public Context mContext;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mini_web);
        mContext = this.getApplicationContext();

        mWebView = (WebView)findViewById(R.id.webView);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://www.word.pe.kr/home/callactivity.html");
        mWebView.setWebViewClient(new WebViewClientClass());
    }


    private class WebViewClientClass extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("app://")) {
                Intent intent = new Intent(mContext.getApplicationContext(), MainActivity.class);
                startActivity(intent);
                return true;
            }
            else {
                view.loadUrl(url);
                return true;
            }
        }
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


}

 


[출처] http://blog.acronym.co.kr/m/post/529

 

 

 

반응형

댓글()

HTML을 안드로이드 웹뷰에 모두 보이게 하기

프로그래밍/Android (Java)|2015. 11. 19. 08:10
반응형

WebSettings settings =  webview.getSettings();

 

웹뷰가 html 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정되도록 한다.
settings.setLoadWithOverviewMode(true);

 

웹뷰가 html의 viewport 메타 태그를 지원하게 한다.

settings.setUseWideViewPort(true);

 

 

[출처] http://blog.hansune.com/610

반응형

댓글()

webview 사용하기 (ProgressBar 로딩바 포함)

프로그래밍/Android (Java)|2015. 11. 17. 12:40
반응형

설명이 없어도 코드를 보면 바로 사용하실 수 있습니다.
여러가지 기능 중 가장 기본적인 코드이고, 자세한 내용은 Developer Android Reference 에서 보실 수 있습니다. 

 Activity Code & Layout XML Code

Activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package me.croute.webview;
 
import me.croute.R;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
 
 
/**
 * 웹뷰 사용 기본 예제
 *
 * @author croute
 * @since 2011.07.27
 */
public class WebViewExampleActivity extends Activity
{
    private static final String DEFAULT_URL = "http://croute.me";
     
    private ProgressBar mPbProgress;
    private WebView mWvBrowser;
         
     
    /* (non-Javadoc)
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_view_example_activity);
         
        mPbProgress = (ProgressBar)findViewById(R.id.web_view_example_activity_pb_progress);
        mWvBrowser = (WebView)findViewById(R.id.web_view_example_activity_wv_browser);
         
        mWvBrowser.getSettings().setJavaScriptEnabled(true);
        mWvBrowser.setWebViewClient(new WebViewClient());      
        mWvBrowser.loadUrl(DEFAULT_URL);       
         
        // 웹뷰의 진행 상태를 표시하기 위한 프로그레스바
        mWvBrowser.setWebChromeClient(new WebChromeClient()
        
               public void onProgressChanged(WebView view, int progress)
               
                   if (progress<100)
                   {
                       mPbProgress.setVisibility(ProgressBar.VISIBLE);
                   }
                   else if (progress==100)
                   {
                       mPbProgress.setVisibility(ProgressBar.GONE);
                   }
                   mPbProgress.setProgress(progress); 
               }  
        });
         
    }
 
}




Layout XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical"
              android:background="#FFFFFF" >
    <ProgressBar
        android:id="@+id/web_view_example_activity_pb_progress"
        android:layout_width="fill_parent"
        android:layout_height="5dp"
        style="?android:attr/progressBarStyleHorizontal" />
    <WebView
        android:id="@+id/web_view_example_activity_wv_browser"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>





 

 ScreenShot & Project files

 

 

[출처] http://croute.me/458

반응형

댓글()