개발모음집

[안드로이드 프로그래밍] Day12 본문

Android

[안드로이드 프로그래밍] Day12

void 2016. 6. 8. 17:13

* 에러가 생길경우

Show only selected application을 No Filters로 하고 Log level을 Error로 변경



어플내에서 웹띄우기 


MyWebView의 MainActivity.java

package com.example.tristan91.mywebview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
}

public void onButton1Clicked(View v) {
webView.loadUrl("http://m.naver.com");
}
}

MyWebView의 AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tristan91.mywebview">

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

<!--
인터넷 네트워킹을 쓰려면 메니패스트에 권한을 추가해야한다.
-->

MyWebView의 activity_main.xml


<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

...


xml 디자인탭에서 WebView 추가하면 자동으로 소스생성



앱안에 html 띄우기


폴더 생성:

res에서 오른쪽버튼 - new - Android resource directory -  directory name, resource type을 anim으로~


파일 생성

anim -  new - animation resource file

file name= scale.xml


파일 내에 html소스 작성



sample.html

<html>

<head>

</head>

<body>

<div>
<h1>안녕하세요</h1>
<h2>웹페이지 테스트</h2>
</div>
</body>
</html>

MyWebView의 MainActivity.java

package com.example.tristan91.mywebview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
}

public void onButton1Clicked(View v) {
webView.loadUrl("file:///android_asset/sample.html");
}
}
스레드와 애니메이션

'/res/anim'은 애니메이션을 위한 액션 정보를 포함한 폴더(xml파일이 있다)

이 xml파일을 로딩을 하여 애니메이션객체생성, 이 객체를 스타트하면 뷰객체가 움직인다.


MyWebView의 MainActivity.java

package com.example.tristan91.myanim;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
TextView textView;

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


textView = (TextView) findViewById(R.id.textView);
}
public void onButton1Clicked(View v) {
Animation translate = AnimationUtils.loadAnimation(this, R.anim.translate); // translate.xml을 애니메이션 로딩
textView.startAnimation(translate);
}

}

MyWebView의 translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="1500"
/>

</set>
<!--
translate 이동하라 scale 확대,축소 rotate등등...
x방향에서 100%위치에서 0%위치까지 1.5초 동안 애니메이션 -->

 텍스트뷰뿐만 아니라 전체를 애니메이션할 수 있다. 레이아웃에 id를 설정하고 로딩해주면 전체 애니메이션!



package com.example.tristan91.myanim;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


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

}
public void onButton1Clicked(View v) {
Animation translate = AnimationUtils.loadAnimation(this, R.anim.translate); // translate.xml을 애니메이션 로딩
ViewGroup container = (ViewGroup) findViewById(R.id.container);
container.startAnimation(translate);
}

}




복잡한 애니메이션시

애니메이션이 끝나는 시점을 알아야 다음 애니메이션을 동작시킬 수 있다.


애니메이션리스너를 적용하면 된다.


책에 소스가 있다.