연습하는 과정에서 중도에 이름을 변경해서 다시 하느라고 이름이 좀 다르다.
IntentBasedWebView 가 아니라 그냥 WebView 만드는 과정이다.
IntentBasedWebView 라는 항목이 나오는 걸 없애는 것도 알고 싶은데 아직은 모르겠다. (ActionBar 제거하는 메소드로 처리하면 됨)
티스토리, 네이버, 블로그 라는 글자만 누르면 하단에 내용이 바뀌도록 구현했다.
기능을 추가해보면서 발생하는 문제점 등이 뭔지 파악도 하면서 배우는 중이다.
내용은 처음 작성하고 나서 계속 학습하면서 내용을 보완하고, 하단에 추가하는 방식으로 작성하고 있다.
남들을 위한 강의가 아니라 내가 이걸 배워가는 과정을 기록하고 있으니까 ^^
1 . WebView를 보여줄 준비과정
2. Layout 구성 과정
LinearLayout 으로 변경했다.
완벽하게 내것으로 소화를 하려면 좀 더 연습이 필요하다.
첨부된 파일은 activity_main.xml 과 MainActivity.java 파일이다.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="20dip"
android:text="티스토리"
android:textColor="#000000" />
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="20dip"
android:text="네이버"
android:textColor="#000000" />
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="20dip"
android:text="블로그"
android:textColor="#000000" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5"
>
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:focusable="true"
android:focusableInTouchMode="true"
android:adjustViewBounds="true"
android:scaleType="fitStart"
/>
</LinearLayout>
</LinearLayout>
3. 퍼미션 설정
4. WebView 코딩과정
package com.example.mywebview;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
public class MainActivity extends Activity {
private WebView mWebView;
private TextView TextView01;
private TextView TextView02;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ActionBar 제거하기
ActionBar actionbar = getActionBar();
actionbar.hide();
setLayout("http://link2me.tistory.com"); // default webview
TextView01 = (TextView) findViewById(R.id.TextView01);
TextView02 = (TextView) findViewById(R.id.TextView02);
TextView01.setOnClickListener(onclick1);
TextView02.setOnClickListener(onclick2);
findViewById(R.id.TextView03).setOnClickListener(onclick3); // 이런 방법으로도 가능하다는 거
}
OnClickListener onclick1 =new OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://www.tistory.com";
setLayout(url);
}
};
OnClickListener onclick2 =new OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://m.naver.com";
setLayout(url);
}
};
OnClickListener onclick3 =new OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://link2me.tistory.com";
setLayout(url);
}
};
@SuppressLint("SetJavaScriptEnabled")
private void setLayout(String url) {
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient()); // 이걸 안해주면 새창이 뜸
mWebView.loadUrl(url);
}
}
화면 확대 축소 옵션
webView.getSettings().setBuiltInZoomControls(true);
webView.setDisplayZoomControls(false);
버튼 또는 TextView 를 클릭하면 다른 Activity 로 이동하게 하고 싶은 경우
이 부분에서 에러가 발생한다.
<check_framebuffer_attachment:854>: Invalid texture format! Returning error!
검색해도 해결책을 구할 수가 없다.
OnClickListener onclick2 =new OnClickListener() {
@Override
public void onClick(View v) {
//switch(v.getId()){
//case R.id.TextView02:
Toast.makeText(getApplicationContext(), "네이버 사이트로 이동합니다.", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, ButtonActivity.class);
startActivity(intent);
//break;
//}
}
};
이렇게 주석처리를 해가면서 해보니 Toast 메시지만 출력하는 것은 문제가 안된다.
그 다음 Intent 처리하는 부분에서 잘못된거 같은데 아직 왜 그러는지 원인을 모르겠다.
안드로이드 OnClick 메소드에 대해 설명이 잘된 사이트
OnClickListener 메소드 부분은 아래와 같이 다시 보완했다.(2016-06-19 일)
ButtonActivity.java 와 button.xml 파일을 생성해서 테스트를 해봤더니 Intent 로 화면이 전환되는 것을 확인했다.
개념이 부족한 상태에서 화면을 복사해서 대략 붙여넣기하면서 수정을 했더니 뭔가 꼬인 부분이 있는거 같다.
아직 Layout 만들고 화면에 불러서 처리하는 부분에 대한 지식이 부족해서인가 보다.
.setJavaScriptEnabled - 웹뷰에서 자바 스크립트 사용 |
'안드로이드 > Android 기능' 카테고리의 다른 글
Android 대화상자(AlertDialog) (0) | 2017.03.14 |
---|---|
Android Studio 사용법 (Intent : Activity 간 데이터 전달) (0) | 2017.03.06 |
Intent(인텐트) : 두 클래스간 배열 문자열 전달 및 배열 분할 (0) | 2017.03.02 |
안드로이드 Intent (Activity 간 데이터 전달) (0) | 2016.06.07 |
Android spinner (drop down list) example (0) | 2016.06.03 |