Boolean 형을 String 형으로 변환하기

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

String bbb = new Boolean(aaa).toString();


Boolean 값인 aaa 를 String 값인 bbb 로 변환 하였습니다.

displayMessage(context, bbb); 와 같이 출력해 값을 확인할 수 있습니다.



반응형

댓글()

텍스트 치환 (replace)

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

String 이나 기타 값의 내용중 특정 문자를 바꾸기 위한 방법입니다.


TextView OLD = (TextView)findViewById(R.id.history);

OLD.setText(sb.toString());

OLD.replaceAll("sys", "docu");    // 안됨


* OLD 내용중 sys 라는 문자는 모두 docu 로 변환시키라는것인데 어디가 잘못인지 안됩니다.

   아래처럼 해결하였습니다.


TextView OLD = (TextView)findViewById(R.id.history);

OLD.setText(sb.toString().replaceAll("sys", "docu"));


반응형

댓글()

getString() 을 이용하여 string.xml 에 있는 문자 가져오기

프로그래밍/Android (Java)|2015. 1. 27. 10:59
반응형

getString() 을 이용합니다.


예) displayMessage(context, getString(R.string.sysdocu_title));


- sysdocu_title : 문자열 name


또 R.string 으로 문자를 가져오려면 파일 최 상단에 아래 내용을 삽입해줘야 합니다.


import android.R.string;



반응형

댓글()

Preferences 저장값 가져오기

프로그래밍/Android (Java)|2015. 1. 27. 10:59
반응형

MainActivity.java


import android.content.SharedPreferences;

import android.preference.PreferenceManager;


public class MainActivity extends Activity {

(생략)

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

(생략)

// 글자크기 설정값 가져오기 (String)

SharedPreferences defaultSharedPref = PreferenceManager.getDefaultSharedPreferences(this);

String strSize = defaultSharedPref.getString("sysdocu_font_size","16dip");


  // 게시판 선택여부 가져오기 (Boolean)

boolean notice_yn = defaultSharedPref.getBoolean("sysdocu_notice", true);

                String string_notice_yn = new Boolean(notice_yn).toString();



(생략)

}

(생략)

}


* k_font_size 는 가져오고자하는 키값입니다. 데이타가 없으면 기본값("16dip")을 strSize 에 넣습니다.

   꼭 onCreate() 에 없어도 됩니다.

String string_notice_yn = new Boolean(notice_yn).toString(); 부분은 없어도 되지만

   displayMessage(context, string_notice_yn); 으로 값을 확인하기 위해 저장 타입을 Boolean 에서 String 으로 바꾸었습니다.


반응형

댓글()

액션바 메뉴 생성

프로그래밍/Android (Java)|2015. 1. 27. 10:59
반응형

res/menu/activity_main.xml


<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item

        android:id="@+id/action_setting"

        android:showAsAction="always"

        android:title="Setting"

        android:icon="@android:drawable/ic_menu_preferences" />

    <item

        android:id="@+id/setting"

        android:title="SETTING" />

    <item

        android:id="@+id/clear"

        android:title="CLEAR" />

    <item

        android:id="@+id/exit"

        android:title="EXIT" />

</menu>


빨간 글씨 부분이 액션바 우측에 나타나는 메뉴이고

나머지 부분은 스마트폰 '메뉴'버튼을 눌렀을때 나타나는 메뉴입니다.



※ 참고

1) android:showAsAction 속성

never : 액션 아이템으로 표시하지 않음 (기본)

always : 항상 액션 아이템으로 표시

ifRoom : 액션 아이템을 표시할 수 있는 공간이 있을 경우 표시

withText : 메뉴 아이콘과 메뉴 텍스트를 함께 액션 아이템으로 표시


2) android:title 속성

메뉴을 길게 눌렀을때 출력되는 텍스트 입니다.


3) android:icon 속성

@android:drawable 로 시작하게 되면 안드로이드 기본 이미지가 출력됩니다.

이미지 정보는 별도 문서를 참고하시기 바랍니다.


4) MainActivity.java 에서  switch 를 통한 case 부분은 OptionsMenu 와 동일합니다.


반응형

댓글()

ImageView 레이아웃 옵션과 사용예제들

프로그래밍/Android (Java)|2015. 1. 27. 10:58
반응형

다음은 이미지를 표시해주는 레이아웃 ImageView 의 옵션중 android:ScaleType 에 대한

설명이다이것은 ImageView 의 크기에 맞게 이미지 크기를 조작하거나 이동시키는 옵션이다

xml 에서는 표에서 나온 android:scaleType=”matrix” 로 표현하며 소스에서는

ImageView::setScaleType(ImageView.ScaleType.MATRIX) 로 구현된다.

 

이제 각각의 값들이 적용되는 예를 살펴보도록 하자.

그림에서 빨간색은 ImageView 의 틀을 보여주기 위해 ImageView  Background 값으로

준것이다그리고 Padding 값을 3으로 주었기 때문에 이미지가 조금 안쪽으로 당겨져 표현된다.


(1) MATRIX
 : ImageView 의 틀을 기준으로 해서 왼쪽 상단을 꼭지점으로 정렬된다.

이미지를 틀에 맞게 재조정하지 않는다틀보다 작거나 커도 그대로 표현된다.

XML : android:scaleType=”matrix”

Source : setScaleType(ImageView.ScaleType.MATRIX);

ImageView : width=287, height=316

Image : width=150, height=250

위의 경우는 이미지가 틀보다 작으므로 정상적으로 보이지만  ImageView 의 틀보다 키우게

되면 줄이지 않기 때문에 잘라져서 보이게 된다.

ImageView : width=287, height=316

Image : width=400, height=400

(2) FIT_XY : 이미지가 ImageView 틀 보다 작거나 크든지 간에 이미지를 틀에 맞추는 것이다.

비율과 상관없이 틀에 맞추기 때문에 좌우 크기가 맞지 않은 그림일 경우에는 찌그러져

보일것이다.

(3) FIX_START : 이미지크기를 틀에 맞게 비율을 줄이되 이미지 시작지점을 ImageView 왼쪽

상단에 맞추어 그림을 표현한다.

XML : android:scaleType=”fitStart”

Source : setScaleType(ImageView.ScaleType.FIT_START);

ImageView : width=287, height=316

Image : width=450, height=350


 

(4) FIX_CENTER : 이미지크기를 틀에 맞게 비율을 줄이되 ImageView 중앙에 맞추어 표현한다.

XML : android:scaleType=”fitCenter”

Source : setScaleType(ImageView.ScaleType.FIT_CENTER);

ImageView : width=287, height=316

Image : width=450, height=350

(5) FIX_END : 이미지크기를 틀에 맞게 비율을 줄이되 ImageView 의 오른쪽 아래에 맞추어

이미지를 표현한다.

XML : android:scaleType=”fitEnd”

Source : setScaleType(ImageView.ScaleType.FIT_END);

ImageView : width=287, height=316

Image : width=450, height=350

(6) CENTER : 이미지크기 그대로 표현하되 이미지를 틀에 맞게 줄이지는 않는다그리고

ImageView 틀의 중앙에 위치시킨다.

XML : android:scaleType=”center”

Source : setScaleType(ImageView.ScaleType.CENTER);

ImageView : width=287, height=316

Image : width=450, height=200

 

(7) CENTER_CROP : 6번에서의 그림은 높이가 ImageView 의 틀과 맞지 않다이것처럼

한쪽이 틀과 맞지 않다면 틀에 맞게 이미지를 늘이면서 다른 한쪽도 같이 비율에 맞게

증가 시킨다그러면 6번 그림은 높이가 증가한 비율만큼 넓이가 증가하여 표현되게 된다.

그리고 그림의 위치는 틀의 중앙에서 표현된다.

XML : android:scaleType=”centerCrop”

Source : setScaleType(ImageView.ScaleType.CENTER_CROP);

ImageView : width=287, height=316

Image : width=450, height=200

(8) CENTER_INSIDE : 7번에서의 내용과 반대로 ImageView 의 틀에 벗어나는 쪽을 맞추어

비율을 줄여 표현한다만약 넓이가 틀에서 벗어난다면 넓이를 틀에 맞추고 그 비율만큼

높이를 줄이게 될것이다. CENTER_CROP, CENTER_INSIDE  ImageView 의 틀에 맞게

이미지를 조정하는 것이 공통적인 특징이다.

XML : android:scaleType=”centerInside”

Source : setScaleType(ImageView.ScaleType.CENTER_INSIDE);

ImageView : width=287, height=316

Image : width=450, height=200


전체소스와 XML 설정값

 

구현한 소스

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
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
 
public class ViewDetail extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_detail);
        ImageView iv = (ImageView)findViewById(R.id.imageView);
 
        Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.test02);
        Bitmap resized = Bitmap.createScaledBitmap(image, 450, 200, true);
        iv.setImageBitmap(resized);
        iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE); // 레이아웃 크기에 이미지를 맞춘다
        iv.setPadding(3, 3, 3, 3);
        iv.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0) {
                finish();
            }
        });
    }
}

view_detail.xml 설정 내용

<LinearLayout

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

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

    <ImageView

        android:id="@+id/imageView"

        android:layout_width="287px"

       android:layout_height="316px"

       android:maxWidth="287px"

       android:maxHeight="316px"

       android:background="#FF9900"/>

    <LinearLayout

        android:orientation="vertical"

        android:layout_width="fill_parent"

        android:layout_height="50px"

        android:gravity="center" >

       <Button

           android:text="New Game"

          android:id="@+id/btnNew"

          android:layout_width="fill_parent"

          android:layout_height="fill_parent"/> 

    </LinearLayout>

</LinearLayout>


[출처] 녹두장군 (http://mainia.tistory.com/473)

반응형

댓글()

배경화면 적용하기 (레이아웃 style)

프로그래밍/Android (Java)|2015. 1. 27. 10:58
반응형

res/values/styles.xml 파일에 아래와 같이 정의 해놓고


<resources>


    <style name="AppTheme" parent="android:Theme.Light" />


    <style name="IntroBG">

        <item name="android:background">@drawable/sysdocu_intro_bg</item>

        <item name="android:layout_width">match_parent</item>

        <item name="android:layout_height">match_parent</item>

    </style>


</resources> 


레이아웃 파일에서 가져다 쓰면 됩니다.


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    style="@style/IntroBG"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">


(생략) 


* 그냥 android:background="#ffffe4" 와 같은 색상 지정이나 src 를 통한 배경 가져오기도 가능합니다.

반응형

댓글()

안드로이드(Android) 에서 프레임 애니메이션 만들기

프로그래밍/Android (Java)|2015. 1. 27. 10:57
반응형

안드로이드(Android) 에서 프레임 애니메이션 만들기

 

개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2

 

이번 주제는 안드로이드에서 ImageView 에 여러가지 그림을 연속적으로

보여주며 애니메이션 효과를 만들어 보는 것이다. 애니메이션의 원리는

알다시피 여러장의 그림을 연속적으로 보여주면서 눈을 속이는 것이다.

 

안드로이드는 이런 한장한장의 그림을 연속적으로 이어서 재생 될수 있도록

클래스를 제공한다. 그 클래스는 android.graphics.drawable.AnimationDrawable 이다.

위젯 ImageView 에서 getBackground 함수를 이용해 얻을 수 있다.

이렇게 얻은 AnimationDrawable 를 이용해 Start, Stop 호출해서 애니메이션의

시작과 종료를 할수 있다.

 

(1) 애니메이션 구현을 위한 여러장의 스틸사진 준비

 

사진은 PNG 이미지로 준비한다. 그리고 drawable 폴더에 넣어둔다.

 

(2) animation list xml 파일 작성

 

ImageView 에 셋팅할 animation list xml 파일이 필요하다. 이곳에 애니메이션에

필요한 스틸사진들의 이름을 차례대로 넣으면 된다.

먼저 drawable 폴더에서 xml 파일을 생성하자. 생성할때 Root Element 를

Animation-list 로 하자.

 

 

생성된 xml 파일에 재생하고자 하는 이미지 리스트를 넣자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
     android:oneshot="false" >
     
<item android:drawable="@drawable/naruto01" android:duration="210" />
    <item android:drawable="@drawable/naruto02" android:duration="210" />
    <item android:drawable="@drawable/naruto03" android:duration="210" />
    <item android:drawable="@drawable/naruto04" android:duration="210" />
    <item android:drawable="@drawable/naruto05" android:duration="210" />
    <item android:drawable="@drawable/naruto06" android:duration="210" />
    <item android:drawable="@drawable/naruto07" android:duration="210" />
    <item android:drawable="@drawable/naruto08" android:duration="210" />
    <item android:drawable="@drawable/naruto09" android:duration="210" />
    <item android:drawable="@drawable/naruto10" android:duration="210" />
    <item android:drawable="@drawable/naruto11" android:duration="210" />
     
</animation-list>

 

(3) main layout 파일에 ImageView 위젯을 추가

 

애니메이션을 표현할 ImageView 위젯을 레이아웃에 추가한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <ImageView
        android:id="@+id/imageAnimation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:adjustViewBounds="true" />
 
</RelativeLayout>

 

(4) main activity 에서 애니메이션 표현 하기

 

소스는 간단하다. ImageView 객체를 얻어온후 setBackgroundResource 함수를 이용해

Animation-list xml 을 셋팅한다. 그리고 ImageView 에서 AnimationDrawable 객체를

얻어낸다.

실질적으로 애니메이션의 동작을 제어하는 객체는 AnimationDrawable 가 된다.

시작과 종료는 onWindowFocusChanged 에 구현되어 있는데 Activity 가 활성화

되어있으면 시작하고 화면이 바뀌거나 종료되어서 포커스를 잃게 되면 Stop 을

호출해 종료 하게 된다.

 

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
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ImageView;
 
public class MainActivity extends Activity {
 
    private AnimationDrawable frameAnimation;
    private ImageView view;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // 컨트롤 ImageView 객체를 가져온다
        view = (ImageView) findViewById(R.id.imageAnimation);
  
        // animation_list.xml 를 ImageView 백그라운드에 셋팅한다
        view.setBackgroundResource(R.drawable.frame_animation_list);
  
        // 이미지를 동작시키기위해  AnimationDrawable 객체를 가져온다.
        frameAnimation = (AnimationDrawable) view.getBackground();
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
     
    // 어플에 포커스가 가면 동작한다
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            // 어플에 포커스가 갈때 시작된다
            frameAnimation.start();
        } else {
            // 어플에 포커스를 떠나면 종료한다
            frameAnimation.stop();
        }
    }
}

 

(5) 실행 화면과 프로젝트 파일

 

프로젝트 파일 링크 :     AnimateSample.zip

 



[출처] 녹두장군 (mainia.tistory.com/704)

반응형

댓글()

네트워크 접속 여부 확인하기 (wifi, mobile data)

프로그래밍/Android (Java)|2015. 1. 27. 10:57
반응형

네트워크 접속 여부를 확인하기 위한 파일 및 소스


AndroidManifest.xml


<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 



SysdocuActivity.java


import android.widget.Toast;

import android.content.Context;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;


public class SysdocuActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sysdocu);

checkNetworkStatus();

}


// Network Connection Check

public void checkNetworkStatus() {

final ConnectivityManager cm = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);

final android.net.NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

final android.net.NetworkInfo mobile = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);


if(mobile.isConnected() || wifi.isConnected()) {

Toast.makeText(this, "Network connect success", Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(this, "Network connect fail", Toast.LENGTH_SHORT).show();

}

}


반응형

댓글()

3초 뒤 자동 화면 전환

프로그래밍/Android (Java)|2015. 1. 27. 10:57
반응형

IntroActivity.java (처음 화면)


import android.os.Handler;

import android.os.Message;

import android.content.Intent;


public class IntroActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_intro);


Handler handler = new Handler() {

public void handleMessage(Message msg) {

super.handleMessage(msg);

startActivity(new Intent(IntroActivity.thisSysdocuActivity.class));

finish();

}

};

handler.sendEmptyMessageDelayed(0, 3000);


}

} 


반응형

댓글()

타이틀바 및 상태바 제거

프로그래밍/Android (Java)|2015. 1. 27. 10:56
반응형

AndroidManifest.xml 파일에서 해당 Activity에 추가를 해주면 됩니다.


타이틀바 제거

<activity android:theme="@android:style/Theme.NoTitleBar">

 

타이틀바 및 상태바 제거

<activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen">


반응형

댓글()