레이아웃 요소 숨기기

프로그래밍/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

반응형

댓글()

TextView 상, 하 여백 줄이기

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

일반적으로 아래와 같은 옵션을 줍니다.

 

.xml 사용시)

android:includeFontPadding="false"

 

.java 사용시)

setIncludeFontPadding( false );

 

하지만 위와 같이 해도 안될 경우 layout 에 아래 옵션을 사용하면 됩니다.

 

android:layout_marginTop="-3dp"
android:layout_marginBottom="-3dp"

 

반응형

댓글()

layout 에서 공백 채우기

프로그래밍/Android (Java)|2015. 11. 13. 09:55
반응형

가로 공백으로 예를 들면


<View
    android:layout_width="0dp"
    android:layout_height="match_parent"

   android:layout_weight="1" />

반응형

댓글()

Simple JSON Parsing Example in Android (리스트뷰, 그리드뷰 아님)

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

In this blog post, ill show you how to Retrieving JSON data and Displaying it in Android TextView.

My Other blog post on JSON Tutorial.

  1. Part I – What is JSON and how to code JSON data on Php
  2. Part II – How to retrieve a simplest JSON data in Android
  3. Part III – How to retrieve a JSON data to ListView in Android
  4. Part IV – How to retrieve a complex typed JSON data in Android
  5. Part V – How to retrieve a JSON data from a Secured Site with Basic Authentication
  6. Part VI – How to Pass a JSON data to Php as a Parameters

 

Please read Part I of this blog, there you can create JSON data in php. I’m using Example 1 from that blog in this tutorial for making this blog to be simple. Hope you have created JSON data in php, so lets get started with retrieving in Android.

Step 1: Create a new project File -> Android Project. While creating a new project give activity name as MainActivity and copy paste this code.

1 import org.json.JSONException;
2 import org.json.JSONObject;
3  
4 import android.app.Activity;
5 import android.app.ProgressDialog;
6 import android.os.AsyncTask;
7 import android.os.Bundle;
8 import android.widget.TextView;
9  
10 public class MainActivity extends Activity {
11 /** Called when the activity is first created. */
12  
14 String name, version;
15 TextView tv1;
16  
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21  
22 new JSONParse().execute();
23 }
24  
25 private class JSONParse extends AsyncTask<String, String, JSONObject> {
26 private ProgressDialog pDialog;
27 @Override
28 protected void onPreExecute() {
29 super.onPreExecute();
30 tv1 = (TextView) findViewById(R.id.textView1);
31  
32 pDialog = new ProgressDialog(MainActivity.this);
33 pDialog.setMessage("Loading Data ...");
34 pDialog.setIndeterminate(false);
35 pDialog.setCancelable(true);
36 pDialog.show();
37 tv1.setText("Getting Values Pls wait..");
38 }
39  
40 @Override
41 protected JSONObject doInBackground(String... args) {
42 JsonParser jParser = new JsonParser();
43 // Getting JSON from URL
44 JSONObject json = jParser.getJSONFromUrl(url);
45 return json;
46 }
47  
48 @Override
49 protected void onPostExecute(JSONObject json) {
50 try {
51 pDialog.dismiss();
52 name = json.getString("name");
53 version = json.getString("version");
54 tv1.setText(name + " - " + version);
55 } catch (JSONException e) {
56 e.printStackTrace();
57 }
58 }
59 }
60 }

Step 2: Create a new class, JsonParser.java and copy paste this code.

1 import java.io.BufferedReader;
2 import java.io.IOException;
3 import java.io.InputStream;
4 import java.io.InputStreamReader;
5 import java.io.UnsupportedEncodingException;
6  
7 import org.apache.http.HttpEntity;
8 import org.apache.http.HttpResponse;
9 import org.apache.http.client.ClientProtocolException;
10 import org.apache.http.client.methods.HttpPost;
11 import org.apache.http.impl.client.DefaultHttpClient;
12 import org.json.JSONException;
13 import org.json.JSONObject;
14  
15 import android.util.Log;
16  
17 public class JsonParser {
18 static InputStream is = null;
19 static JSONObject jObj = null;
20 static String json = "";
21  
22 // constructor
23 public JsonParser() {
24 }
25  
26 public JSONObject getJSONFromUrl(String url) {
27 // Making HTTP request
28 try {
29 // defaultHttpClient
30 DefaultHttpClient httpClient = new DefaultHttpClient();
31 HttpPost httpPost = new HttpPost(url);
32 HttpResponse httpResponse = httpClient.execute(httpPost);
33 HttpEntity httpEntity = httpResponse.getEntity();
34 is = httpEntity.getContent();
35 } catch (UnsupportedEncodingException e) {
36 e.printStackTrace();
37 } catch (ClientProtocolException e) {
38 e.printStackTrace();
39 } catch (IOException e) {
40 e.printStackTrace();
41 }
42 try {
43 BufferedReader reader = new BufferedReader(new InputStreamReader(
44 is, "iso-8859-1"), 8);
45 StringBuilder sb = new StringBuilder();
46 String line = null;
47 while ((line = reader.readLine()) != null) {
48 sb.append(line + "n");
49 }
50 is.close();
51 json = sb.toString();
52 } catch (Exception e) {
53 Log.e("Buffer Error", "Error converting result " + e.toString());
54 }
55 // try parse the string to a JSON object
56 try {
57 jObj = new JSONObject(json);
58 } catch (JSONException e) {
59 Log.e("JSON Parser", "Error parsing data " + e.toString());
60 }
61 // return JSON String
62 return jObj;
63 }
64 }

Step 3: Open your activity_main.xml and copy paste this code:

1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin" >
9  
10 <TextView
11 android:id="@+id/textView1"
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 android:layout_centerHorizontal="true"
15 android:layout_centerVertical="true"
16 android:text="Medium Text"
17 android:textAppearance="?android:attr/textAppearanceMedium" />
18  
19 </RelativeLayout>

Step 4: Open your AndroidManifest.xml and add Internet Permission.

1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.geeks.gallery.json_demoexample"
4 android:versionCode="1"
5 android:versionName="1.0" >
6  
7 <uses-sdk
8 android:minSdkVersion="16"
9 android:targetSdkVersion="19" />
10 <uses-permission android:name="android.permission.INTERNET"/>
11 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
12  
13 <application
14 android:allowBackup="true"
15 android:icon="@drawable/ic_launcher"
16 android:label="@string/app_name"
17 android:theme="@style/AppTheme" >
18 <activity
19 android:name=".MainActivity"
20 android:label="@string/app_name" >
21 <intent-filter>
22 <action android:name="android.intent.action.MAIN" />
23  
24 <category android:name="android.intent.category.LAUNCHER" />
25 </intent-filter>
26 </activity>
27 </application>
28  
29 </manifest>

ScreenShot:

Screenshot_2015-01-11-13-54-24

Download Source Code from here.

 

 

[출처] http://www.geeks.gallery/simple-json-parsing-example-in-android-part-ii/

 

반응형

댓글()

외부 이미지 (url) 출력하기

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

import java.io.InputStream;

import java.net.MalformedURLException;

import java.net.URL;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.os.Handler;

import android.widget.ImageView;


public class MainActivity extends Activity {


    Handler handler = new Handler();


        @Override

        protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_main);

        Thread t = new Thread(new Runnable() {


        @Override

        public void run() {

            try {

                final ImageView imgSunny = (ImageView) findViewById(R.id.getImage);

                URL url = new URL("http://img.naver.net/static/www/u/2013/0731/nmms_224940510.gif");

                InputStream is = url.openStream();

                final Bitmap bm = BitmapFactory.decodeStream(is);

                handler.post(new Runnable() {

                    @Override

                    public void run() {

                        imgSunny.setImageBitmap(bm);

                    }

                });

                is.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

            }

        });

        t.start();


[출처http://cieneyes.tistory.com/435


반응형

댓글()