View - TextView, Button,ToggleButton

웹 & 안드로이드/Android|2013. 10. 4. 12:30

1. TextView


- layout xml파일에서 생성.


- 혹은, 자바 액티비티 java파일에서 생성 할 수 잇다

- MainActivity .java
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
package wakeup.textview_test_dynamic;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    RelativeLayout relativeLayout;    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //xml에 만들어진 레이아웃을 불러옴.
        relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
        
        TextView textView = new TextView(getApplicationContext());//새로운 TextView를 생성.
        textView.setText("텍스트!");//내용 삽입.
        
        //뷰의 크기등 스타일을 지정하기 위한 코드이다.
        //params라는 스타일을 하나 생성후, 마진을 설정한 후에 textView에 이스타일을 넣었다.
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                                                                       (int)LayoutParams.WRAP_CONTENT
                                                                     , (int)LayoutParams.WRAP_CONTENT);
        params.setMargins(11, 120, 10, 130);
        textView.setLayoutParams(params); 
        
        //불러온 레이아웃에 이러한 설정을 가진 textView를 넣는다.
        relativeLayout.addView(textView);
    } 
}


- 다음 java코드는

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(...);

textview.setLayoutParams(params);


 xml에서 이에 해당한다.

 <TextView

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>


-RelativeLayout.LayoutParams  텍스트뷰의 크기나 위치는 텍스트뷰가 위치한 상위 레이아웃에서 관리한다.

  텍스트뷰가 이 메소드(textView.setLayoutParams())를 통해 텍스트뷰의 크기나 위치를 가지고 있으면

  바로 상위의 레이아웃은 이 정보를 토대로 텍스트뷰 크기, 위치를 나타내게 된다. 

 (가상메소드, 인터페이스(추상메소드), 내부클래스 기술과 관련이 있다.)(정확히는 잘 모르겟다.)


2.button


-버튼에 색이나 그림을 넣을 수 있다.


-버튼에 색 넣기.

-layout.xml

1
2
3
4
5
6
<Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_soild"
        android:text="Gradient변색" />


android:background="" : 이 속성에 그림 혹은 xml id가 들어간다.


- xml형식의 그림.

-res/drawble-hdpi/button_soild.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#500f0f0f"/>
            <stroke android:color="#ffffff"/>
            <corners android:radius="5sp"/>
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#ff5555"/>
            <corners android:radius="5sp"/>
        </shape>
    </item>
</selector>


*-xml파일에서 리소스에 있는 그림을 넣는 방법.

-res/drawble-hdpi/onepeace.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true"
        android:drawable="@drawable/onepeace_on">        
    </item>
    <item android:drawable="@drawable/onepeace">       
    </item>
</selector>


-android:drawable="" 이속성에 그림id를 넣으면 된다.


3.ToggleButton


-셀렉트 기능 역할을 부여하는 클래스는 View가 아니라 Button을 상속 받은 CompoundButton클래스 이다.


-그래서 토글 버튼의 온,오프 기능을 활용하기 위해서는 리스너 클래스에 CompoundButton를 상속 시켜야 한다.

-MainActivity .java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MainActivity extends Activity {
    ToggleButton tbtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tbtn = (ToggleButton)this.findViewById(R.id.toggleButton1);
        
        //CompoundButton.OnCheckedChangeListener()를 익명클래스로 바로 호출하였다.
        tbtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Toast.makeText(getApplicationContext(), "On", 0).show();
                }else{
                    Toast.makeText(getApplicationContext(), "Off", 0).show();
                }
            }
        });
    }
}


-onCheckedChanged()는 매개변수로  boolean isChecked를 받음으로써 토글이 체크 되어있는지 아닌지를 알 수 있다.


*switch button도 온오프 기능은 같다.

-다만 스위치는 API LEVEL 14이후에 나왔다. 

댓글()

다형성 - 업캐스팅, 다운캐스팅

1. 업 캐스팅.

 

- 특정 객체가 하위 클래스의 형에서 상위의 클래스의 형으로 캐스팅 되는것.

- 업캐스팅은 다음과 같은 기술과 연결된다.

*상속, 오버라이딩, 가상메서드,  추상클래스, 인터페이스.

-일반적인 캐스팅의 원리는 작은 것이 큰 것으로 될수 있다는 것이다.

 

 

 

1
2
3
4
5
6
public class UpcastingTest {
    public static void main(String agr[]){
        byte b = 0;        
        int i = b;//byte형에서 int형으로 변환이 가능하다.
    }
}

 byte형에서 int형으로 캐스팅 되었다.

 

 

- 클래스의 업 캐스팅 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UpcastingTest {
    public static void main(String agr[]){
        TestTop top = new TestBottom(); 
        //작은것(TestBottom)이 큰것(TestTop)으로 캐스팅 되었다.
        Top.Test1();
        Top.Test2();//에러! 이 경우 Top는 하위 클래스의 test2메소드 호출이 불가능하다.
 
    }
}
class TestTop{
    public void Test1(){        
    }
}
class TestBottom extends TestTop{
    public void test2(){        
    }
}

 

 이 경우, 상위 클래스인 TestTop은 하위 클래스인 TestBottom의 맴버메소드에 접근 할 수 없다.

하지만 오버라이딩과 가상 메소드 기법을 사용하여 접근 할 수 없는 부분을 사용할 수가 있다.

 

-가상메소드를 이용한 업캐스팅. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class UpcastingTest {
    public static void main(String agr[]){
        TestBottom bottom = new TestBottom();
        TestTop Top = bottom;
        bottom.Test1();        
        Top.Test1();//하위클래스에서 정의가 되었다면 하위클래스를 호출.
    }
}
class TestTop{
    public void Test1(){
        System.out.println("상위클래스의 멤버입니다.");
    }
}
class TestBottom extends TestTop{
    public void Test1(){
        System.out.println("하위클래스의 멤버입니다.");
    }
}

 결과

 

하위클래스의 멤버입니다.
하위클래스의 멤버입니다.

 

 

 

-상위클래스의 메소드를 호출했지만 하위클래스에서 같은 이름으로 메소드가 정의 되었다면 하위클래스의 메소드를 호출하게 된다.

물론, 하위클래스에서 정의 되지 않았으면 상위클래스의 메소드를 호출한다.

 

 

-추상메소드를 이용한 업캐스팅 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UpcastingTest {
    public static void main(String agr[]){
        TestBottom bottom = new TestBottom();
        TestTop Top = bottom;
        bottom.Test1();        
        Top.Test1();    
    }
}
abstract class TestTop{
    public abstract void Test1();
}
class TestBottom extends TestTop{
    @Override
    public void Test1(){
        System.out.println("하위클래스의 멤버입니다.");
    }
}

 

결과

 

하위클래스의 멤버입니다.
하위클래스의 멤버입니다.
 

 

-추상클래스는 하위클래스에서 추상메소드를 오버라이딩 해야 객체생성이 되기때문에 가상메소드의 개념과 비슷하다.

 


2. 다운캐스팅

 

'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

IntegerArrayConverter - String배열을 int배열로 변환  (0) 2013.10.06
내부클래스  (0) 2013.10.04
다형성-인터페이스  (0) 2013.10.02
다형성-추상클래스  (0) 2013.10.01
추상클래스, 인터페이스  (0) 2013.10.01

댓글()

android.widget.TextView xml 속성 목록

웹 & 안드로이드/Android|2013. 10. 2. 14:26

링크를 클릭하면 해당되는 안드로이드 apl문서로 이동 합니다.


 속성 이름

해당 메소드 

설명 

 android:autoLink

 setAutoLinkMask(int)

 택스트뷰의 텍스트내용이 이메일, 주소등일때 자동으로 클릭할 수 있는 링크로 변환할지를 결정. 

 android:autoText

 setKeyListener(KeyListener)

 설정하면 이 텍스트뷰에 입력할 수 있고, 입력된 텍스트를 자동으로 기본적인 맞춤법 오류를 수정하도록 지정.

 android:bufferType

 setText

(CharSequence,TextView.BufferType)

 getText()가 반환하는 최소 형식을 지정.

 android:capitalize

 setKeyListener(KeyListener)

 설정하면 이 텍스트 뷰에 입력 가능하며, 자동으로 어떤 유형으로 입력 할 것인지를 결정.(유형은 <<이름 클릭)

 android:cursorVisible

 setCursorVisible(boolean)

 커서를 표시할 것인지를 지정.

 android:digits

 setKeyListener(KeyListener)

 숫자 입력이 가능하며 특정숫자키에 사람이 등록되어있으면 true,아니면 false를 반환.

 android:drawableBottom

 setCompoundDrawablesWithIntrinsicBounds

(int,int,int,int)

 텍스트를 기준으로 각 위치에 그림을 넣을 수 있다.

 android:drawableEnd

 setCompoundDrawablesRelativeWithIntrinsicBounds

(int,int,int,int)

 android:drawableLeft

 setCompoundDrawablesWithIntrinsicBounds

(int,int,int,int)

 android:drawableRight

 setCompoundDrawablesWithIntrinsicBounds

(int,int,int,int)

 android:drawableStart

 setCompoundDrawablesRelativeWithIntrinsicBounds

(int,int,int,int)

 android:drawableTop

 setCompoundDrawablesWithIntrinsicBounds

(int,int,int,int)

 android:drawablePadding

 setCompoundDrawablePadding(int)

  그림과 택스트 사이의 여백을 설정한다.

 android:editable

 

 텍스트를 편집한다.

 android:editorExtras

 setInputExtras(int)

 입력 방법을 제공하는 추가 데이터를 포함하는 xml리소스를 지정한다.

 android:ellipsize

 setEllipsize(TextUtils.TruncateAt)

 텍스트가 길어 화면을 넘어갈때 텍스트를 어떻게 잘라 화면에 표시 할 것인지를 지정.

 android:ems

 setEms(int)

 글꼴의 크기를 정한다.

 android:fontFamily

 setTypeface(Typeface)

 폰트 패밀리를 지정

 android:freezesText

 setFreezesText(boolean)

 화면이 넘어가도 텍스트를 유지 할 것인지를 지정.

 android:gravity

 setGravity(int)

 텍스트 정렬을 지정

 android:height

 setHeight(int)

 텍스트뷰의 높이를 지정.

 android:hint

 setHint(int)

 텍스트가 비어있을때 표시되는 텍스트를 지정.

 android:imeActionId

 setImeActionLabel(CharSequence,int)

 에디터정보를 제공. 텍스트 뷰와 연결된 id를 사용.

 android:imeActionLabel

 setImeActionLabel(CharSequence,int)

 에디터정보를 제공. 텍스트 뷰와 연결된 라벨을 사용.

 android:imeOptions

 setImeOptions(int)

 에디터의 추가기능을 사용.

 android:includeFontPadding

 setIncludeFontPadding(boolean)

 텍스트의 상,하 여백이 있는지의 여부를 지정.

 android:inputMethod

 setKeyListener(KeyListener)

 이벤트 메소드를 지정.

 android:inputType

 setRawInputType(int)

 입력된 텍스트의 형을 지정.

 android:lineSpacingExtra

 setLineSpacing(float,float)

 텍스트의 행 사이의 간격을 지정.

 android:lineSpacingMultiplier

 setLineSpacing(float,float)

 텍스트 사이의 간격을 지정.

 android:lines

 setLines(int)

 텍스트 줄 수를 지정.

 android:linksClickable

 setLinksClickable(boolean)

 텍스트가 이메일이나 주소일때 자동으로 링크를 걸 것인가를 결정.

 android:marqueeRepeatLimit

 setMarqueeRepeatLimit(int)

 움직이는 애니메이션을 반복할 횟수를 지정.

텍스트가 움직이는것을 활성화 했을때만 적용됨.

 android:maxEms

 setMaxEms(int)

 최대 글꼴의 폭을 지정.

 android:maxHeight

 setMaxHeight(int)

 택스트 뷰의 최대 높이를 지정.

 android:maxLength

 setFilters(InputFilter)

 텍스트의 길이를 제한하는 입력 필터를 지정.

 android:maxLines

 setMaxLines(int)

 텍스트의 최대 줄 수를 지정.

 android:maxWidth

 setMaxWidth(int)

 텍스트뷰의 최대 폭을 지정.

 android:minEms

 setMinEms(int)

 글꼴의 최소 폭을 지정.

 android:minHeight

 setMinHeight(int)

 최소 높이를 지정.

 android:minLines

 setMinLines(int)

 텍스트의 최소 줄을 지정.

 android:minWidth

 setMinWidth(int)

 텍스트뷰의 최소 너비을 지정.

 android:numeric

 setKeyListener(KeyListener)

 숫자 입력 방식을 지정.

 android:password

 setTransformationMethod

(TransformationMethod)

 입력된 텍스트를 점으로 표시할 것인지를 결정.

 android:phoneNumber

 setKeyListener(KeyListener)

 전화번호를 입력하는 텍스트뷰인지를 결정.

 android:privateImeOptions

 setPrivateImeOptions(String)

 입력 방식을 걸정.

 android:scrollHorizontally

 setHorizontallyScrolling(boolean)

 수평으로 스크롤을 지정.

 android:selectAllOnFocus

 setSelectAllOnFocus(boolean)

 텍스트가 선택되어 있으면 전부를 선택함.

 android:shadowColor

 setShadowLayer(float,float,float,int)

 택스트의 그림자 색을 설정.

 android:shadowDx

 setShadowLayer(float,float,float,int)

 그림자의 x축을 설정.

 android:shadowDy

 setShadowLayer(float,float,float,int)

 그림자의 y축을 설정.

 android:shadowRadius

 setShadowLayer(float,float,float,int)

 그림자의 반경을 설정.

 android:singleLine

 setTransformationMethod

(TransformationMethod)

 가로의 텍스트 수를 제한하는 대신 줄 바꿈을 한다.

 android:text

 setText(CharSequence,TextView.BufferType)

 텍스트 뷰에 표시되는 텍스트를 지정한다.

 android:textAllCaps

 setAllCaps(boolean)

 

 android:textAppearance

 

 기본 텍스트의 색상, 글꼴, 크기, 스타일을 지정.

 android:textColor

 setTextColor(int)

 텍스트 색을 지정.

 android:textColorHighlight

 setHighlightColor(int)

 텍스트가 선택되었을때의 색을 지정.

 android:textColorHint

 setHintTextColor(int)

 입력된 텍스트가 없을때 뜨는 텍스트의 색을 지정.

 android:textColorLink

 setLinkTextColor(int)

 링크된 텍스트 색을 지정.

android:textIsSelectable

 isTextSelectable()

 텍스트 내용을 선택할 수 있는 지를 결정.

 android:textScaleX

 setTextScaleX(float)

 텍스트의 가로 배율을 설정.

 android:textSize

 setTextSize(int,float)

 텍스트 크기를 설정.

 android:textStyle

 setTypeface(Typeface)

 텍스트 스타일을 설정. (굵게, 기울임 꼴, 굵은 기울임).

 android:typeface

 setTypeface(Typeface)

 텍스트의 글씨체를 설정.

 android:width

 setWidth(int)

 텍스트 뷰의 폭을 설정.


'웹 & 안드로이드 > Android' 카테고리의 다른 글

View - Switch, RadioGroup(RadioButton)  (0) 2013.10.07
View - TextView, Button,ToggleButton  (0) 2013.10.04
android.view.View의 xml 속성 목록  (1) 2013.10.02
[10.1]이벤트 처리  (2) 2013.10.01
안드로이드 컴포넌트  (0) 2013.10.01

댓글()

android.view.View의 xml 속성 목록

웹 & 안드로이드/Android|2013. 10. 2. 14:20


Attribute name

Related Method

 설명

 android:alpha

 setAlpha(float)

 0(투명)과 1(불투명) 사이의 값으로 불투명도를 지정한다.

 android:background

 setBackgroundResource(int)

 리소스의 그림을 배경으로 지정.

 android:clickable

 setClickable(boolean)

 이 뷰를 클릭하면 이벤트가 반응 할 것인가 아닌가를 

 android:contentDescription

 setContentDescription

(CharSequence)

 텍스트 내용을 간략하게 설명하는 텍스트를 지정한다.

 android:drawingCacheQuality

 setDrawingCacheQuality(int)

 

 android:duplicateParentState

 

직접적인 부모로부터 그리기 스타일을 가져올것인지를 지정.

 android:fadeScrollbars

 setScrollbarFadingEnabled

(boolean)

 사용하지 않을때 화면은 어둡게 할것인지를 지정.

 android:fadingEdgeLength

 getVerticalFadingEdgeLength()

 페이딩 가장자리의 길이를 지정.

 android:filterTouchesWhenObscured

 setFilterTouchesWhenObscured

(boolean)

 화면이 다른창으로 이동할때 터치 필터링 여부를 지정. 

 android:fitsSystemWindows

 setFitsSystemWindows(boolean)

 ??화면에 레이아웃을 표시할때 폰의 상태표시줄을 같이 표시할 것인지의 여부를 지정.

 android:focusable

 setFocusable(boolean)

 뷰가 포커스를 취할 수 있는지의 여부를 지정.

 android:focusableInTouchMode

 setFocusableInTouchMode

(boolean)

 터치모드에서 포커스를 취할 수 있는지의 여부를 지정.

 android:hapticFeedbackEnabled

 setHapticFeedbackEnabled

(boolean)

 보기와 같이 긴 프레스등의 이벤트를 사용할 햅틱 피드백을 가져야 할지의 여부를 지정.

 android:id

 setId(int)

 이 뷰를 참조 하기 위한 식별자(id)를 부여.

 android:importantForAccessibility

 setImportantForAccessibility(int)

 이 뷰의 이벤트가 중요한 시스템을 접근할 때 이것을 실행시킬지의 여부를 사용자에게 물어보는 창을 띄운다.

 android:isScrollContainer

 setScrollContainer(boolean)

 이 뷰를 이동하거나 축소, 확대가 가능하고, 스크롤이 있는 컨테이너인지를 지정.

 android:keepScreenOn

 setKeepScreenOn(boolean)

 뷰를 볼 동안 화면은 유지할지를 지정.

 android:layerType

 setLayerType(int,Paint)

 이 레이어의 유형을 지정.

 android:layoutDirection

 setLayoutDirection(int)

 레이아웃의 방향을 설정.

 android:longClickable

 setLongClickable(boolean)

 long클릭시 이벤트의 반응 여부를 지정.

 android:minHeight

 setMinimumHeight(int)

 뷰의 최소 높이를 지정.

 android:minWidth

 setMinimumWidth(int)

 뷰의 최소 너비를 지정.

 android:nextFocusDown

 setNextFocusDownId(int)

 다음 포커스가 되는 뷰를 지정.

자세히는 몰라!!!

 android:nextFocusForward

 setNextFocusForwardId(int)

 android:nextFocusLeft

 setNextFocusLeftId(int)

 android:nextFocusRight

 setNextFocusRightId(int)

 android:nextFocusUp

 setNextFocusUpId(int)

 android:onClick

 

 뷰를 클릭하면 컨텍스트의 메소드를 호출한다.

 android:padding

 setPaddingRelative(int,int,int,int)

 사방의 가장자리 여백을 픽셀단위로 설정.

 android:paddingBottom

 setPaddingRelative(int,int,int,int)

 아래쪽 여백을 설정

 android:paddingEnd

 setPaddingRelative(int,int,int,int)

 각 위치의 여백 설정

 android:paddingLeft

 setPadding(int,int,int,int)

 android:paddingRight

 setPadding(int,int,int,int)

 android:paddingStart

 setPaddingRelative(int,int,int,int)

 android:paddingTop

 setPaddingRelative(int,int,int,int)

 android:requiresFadingEdge

 setVerticalFadingEdgeEnabled

(boolean)

 

 android:rotation

 setRotation(float)

 각도만큼 회전한다.

 android:rotationX

 setRotationX(float)

 각도만큼 x축 회전

 android:rotationY

 setRotationY(float)

 각도만큼 y축 회전

 android:saveEnabled

 setSaveEnabled(boolean)

 뷰에 지정된 id에 뷰 상태가 저장된다.

 android:scaleX

 setScaleX(float)

 x축의 스케일을 지정

 android:scaleY

 setScaleY(float)

 y축 방향의 스케일을 지정

 android:scrollX

 

 가로스크롤의 초기위치를 픽셀단위로 지정.

 android:scrollY

 

 세로스크롤의 초기위치를 픽셀단위로 지정.

 android:scrollbarAlwaysDrawHorizontalTrack

 

 가로 스크롤을 항상 표시할것인지를 지정.

 android:scrollbarAlwaysDrawVerticalTrack

 

 세로스크롤바를 항상 표시할 것인지를 지정.

 android:scrollbarDefaultDelayBeforeFade

 setScrollBarDefaultDelayBeforeFade

(int)

 대기할때 화면이 어두워지기전의 시간을 지정.

 android:scrollbarFadeDuration

 setScrollBarFadeDuration(int)

 스크롤바가 사라지는데 걸리는 시간을 지정.

 android:scrollbarSize

 setScrollBarSize(int)

 스크롤바의 높이와 너비를 지정.

 android:scrollbarStyle

 setScrollBarStyle(int)

 스크롤바의 위치와 스타일을 지정.

 android:scrollbarThumbHorizontal

 

 가로스크롤바의 당김을 지정.(손가락)

 android:scrollbarThumbVertical

 

 세로스크롤바의 당김을 지정.(손가락)

 android:scrollbarTrackHorizontal

 

 가로스크롤바의 당김을 지정.(트랙)

 android:scrollbarTrackVertical

 

 로스크롤바의 당김을 지정.(트랙)

 android:scrollbars

 

 스크롤 여부에 따라 스크롤바를 표시할 것인지를 지정.

 android:soundEffectsEnabled

 setSoundEffectsEnabled

(boolean)

 이벤트에 대한 사운드를 사용할 것인지를 지정.

 android:tag

 

 나중에 검색 할 수있도록 뷰의 문자열을 포함하여 이 뷰에 대한 태그를 제공한다.

 android:textAlignment

 setTextAlignment(int)

 텍스트의 정렬을 지정.

 android:textDirection

 setTextDirection(int)

 텍스트의 방향을 지정. 위에서 아래로 쓸것인가, 좌 혹은 우로 쓸것인가의 방향.

 android:transformPivotX

 setPivotX(float)

 뷰가 회전하고 확장할 수있는 기준 점의 x위치.

 android:transformPivotY

 setPivotY(float)

 뷰가 회전하고 확장할 수있는 기준 점의 y위치.

 android:translationX

 setTranslationX(float)

 뷰의 x축을 변환.

 android:translationY

 setTranslationY(float)

 뷰의 y축을 변환.

 android:visibility

 setVisibility(int)

 뷰를 보이는것을 지정.

보이게 할 수 있고 안보이게 할 수 잇다.


댓글()

다형성-인터페이스

1.인터페이스


- 추상클래스들 중 오로지 추상메소드로만 이루어져있는 추상클래스를 말한다.

- 골격이라는 개념이며, 추상메소드로만 이루어져 있다.(내용이 있는 구현된 메소드를 넣을 수 없다.)

 

- 인터페이스는 implements를 이용해서 추상 메서드를 구현한다.


-인터페이스 선언. Test.java
1
2
3
4
5
public interface Test {
    void a1();
    void a2();
 


-인터페이스 상속. Test1.java
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
class Test1{
    public static void main(String args[]){
        new Test2().a1();
        new Test2().a2();        
        new Test3().a1();
        new Test3().a2();
    }
}
class Test2 implements Test{
    @Override
    public void a1(){
        System.out.println("Test2의 a1입니다.");
    }
    @Override
    public void a2() {
        System.out.println("Test2의 a2입니다.");        
    }
}
class Test3 implements Test{
    @Override
    public void a1(){
        System.out.println("Test3의 a1입니다.");
    }
    @Override
    public void a2() {
        System.out.println("Test3의 a2입니다.");        
    }
}

-결과

 

Test2의 a1입니다.
Test2의 a2입니다.
Test3의 a1입니다.
Test3의 a2입니다.

 

-인터페이스도 추상클래스와 마찬가지로 모든 추상메소드내용을 정의해야 객채 생성이 가능하다.

인터페이스를 상속받아 추상 메소드를 전부 구현하지 않고 일부만 구현하면 추상클래스가 된다.

 

- 인터페이스는 final static 변수(상수 변수)를 가질 수 있다.

- 상수 변수는 전역적이며, 값 수정이 불가능 하다.



2.다중상속.


- 자바는 다중상속이 유용함에 불구하고 다중상속으로 인해 나타나는 문제점으로 인해 다중상속을 금지하고 있다.

*일부가 구현된 메소드를 가진 추상클래스를 각각 A, B가 상속받아 클래스를 구현하였다.

 클래스 C가 동시에 A와 B를 다중상속을 받게 되면 추상클래스에서 일부 구현된 메소드가 중복되게 된다.

(같은 이름과 같은 매개변수가 있는 메소드 2개를 동시에 가지게 된다.)

-...


'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

내부클래스  (0) 2013.10.04
다형성 - 업캐스팅, 다운캐스팅  (0) 2013.10.02
다형성-추상클래스  (0) 2013.10.01
추상클래스, 인터페이스  (0) 2013.10.01
커넥션 풀  (0) 2013.09.30

댓글()

다형성-추상클래스

- 하나로 여러가지 일을 하는 것.


1.추상(Abstract)클래스


- 자바에서의 추상은 '완전하지 않다'라는 의미로 해석하면 된다.

- 추상클래스 : 추상메서드를 일부 포함하는 클래스.

- 추상메소드 : 몸체가 없는 메소드.


- 몸체가 없는 메소드를 추상메소드라고 하며 추상메소드를 하나 이상 포함하는 클래스는 추상 메소드이다.

- 추상 클래스는 extends를 이용해서 추상 메서드를 구현한다.

-예제)

Test.java
1
2
3
4
5
6
7
8
9
10
public abstract class Test {
       public void a1(){
        //멤버 메소드.
        System.out.println("a1");
    }
       public abstract void a2();
//추상메소드. {}괄호가 없이 ;로 끝난다.
//즉 몸체가 없다.
}
 


Test1.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class test1 {
    public static void main(String args[]){
        new test2().a1();
        new test2().a2();
    }
    
}
class test2 extends Test{
 
    @Override
    public void a2() {
        System.out.println("a2");        
    }
    
}
 


결과 

a1

a2


- 추상클래스는 절대 직접적으로 객체 생성이 불가능 하다. 완전하지 못한 추상메소드가 존재하기 때문이다.

  추상클래스를 사용하기 위해서는 클래스에서 추상클래스를 상속 받아 추상메소드를 오버라이딩하여 완성 시켜야 한다.


- 추상클래스를 상속받은 하위 클래스에서 추상메소드를 오버라이딩 하지 않으면 하위 클래스도 추상클래스가 된다.


- 추상메소드를 가지지 않는 추상클래스가 존재 할 수도 있다

이 경우는 상속을 받기만 하면 완전한 클래스가 되기때문에 따로 오버라이딩 하지 않아도 객체 생성이 가능하다.



댓글()

추상클래스, 인터페이스

http://www.xfind.co.kr/xgb/bbs/board.php?bo_table=04_4&wr_id=48

'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

다형성-인터페이스  (0) 2013.10.02
다형성-추상클래스  (0) 2013.10.01
커넥션 풀  (0) 2013.09.30
[이클립스 플러그인]SubVersive, svnConnector(svn 설치)  (0) 2013.09.30
아파치/톰캣 설치하기  (0) 2013.09.27

댓글()

[10.1]이벤트 처리

웹 & 안드로이드/Android|2013. 10. 1. 11:05

-버튼 아이디에 @+id/이름 이라고 되어있다.

R.java에 등록하고, 자바 파일에서 호출하여 어떠한 기능을 가능하도록 하는것이다.

리스너를 추가시키기 위함이다.


-레이아웃에 버튼이 있다. 레이아웃만 호출하면 버튼에 기능을 넣을 수가 없다.

그 버튼까지 R.java에 등록하여 자바에서 호출하여 기능을 넣을 수가 있다.


-Activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<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" >
<!-- 버튼 하나를 생성-->
<!-- R.java에 등록하여 자바파일에서 이 버튼을 호출하여 리스너를 부여함. -->
    <Button
        android:id="@+id/event_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/event_btn"
         />
 
</RelativeLayout>



MainActivity.java

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
package com.wakeup.event_test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button)this.findViewById(R.id.event_btn);//R.java에 등록된 버튼을 호출.
    
        btn.setOnClickListener(new View.OnClickListener() {//익명 클래스를 생성. 1회성 클래스이기 때문
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this"안녕하세요", 0).show();
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }    
}
 


결과



버튼을 누르면 "안녕하세요" 문자열이 뜬다.

댓글()

안드로이드 컴포넌트

웹 & 안드로이드/Android|2013. 10. 1. 10:14

1. Activity

안드로이드 프로그래밍을 하면 만나는 가장 기초적인 컴포넌트로서, 사용자 인터페이스의 기본 단위.

앱의 한 화면을 자체를 Activity 라 하고, 일반적으로 앱은 여러개의 Activity로 이뤄지며, 

또 하나의 Activity는 여러개의 View(ex: textview, imageview ...) 로 이뤄져 있다.



2. Service

Activity가 화면에 보이고 사용자에게 입출력을 제공한다면, Service의 경우 그와 반대로 화면에 출력되는 UI가 없으며, 백그라운드에서 길고 반복적인 작업을 하는데 사용된다. 예를 들자면 일반적인 음악재생 앱의 경우, 노래 재생은 계속하되 다른 앱을 실행한다던가 다른 작업을 할수 있다. 즉, 여기서는 노래가 Service로 실행중인것이다. 앞서 말했듯 Service는 UI 가 없기 때문에, 사용자와 통신하고자 한다면, 중간에 Activity를 삽입하고 이를 통해 중간 매개체 삼아 통신한다.  [ Service <-> Activity <-> 사용자 ]

재미있는 특징으로는 Service는 하나의 앱에 종속적이지 않기 때문에 하나의 Service로 다양한 앱들과 통신이 가능하다는 점.



3. Broadcast Receiver

안드로이드는 시스템의 기능/이벤트들이 발생하면, 이를 Broadcast 한다. 네트워크에서의 Broadcast 개념과 비슷하며, 안드로이드에서는 각 앱들로 이 신호를 전달하게 된다. 따라서 각 앱들에 이 신호를 받을수 있는 Broadcast Receiver 만 구현해 놓으면, 언제든지 각종  시스템 이벤트에 대비하고 이를 활용할수 있다. 여기서  시스템 이벤트들이란, 전화가 왔다!, 사진을 찍었다!, 배터리가 없다!, 문자가 왔다!, 등등..

시스템 이벤트만 언급 했지만 사실 하나의 일반 앱에서도 시스템에 정의된 신호가 아닌 임의 Broadcast 를 날릴수 있고, 이를 활용 가능하다.



4. Content Provider

앱 간에 데이터를 송수신하는데 사용된다. 일반적으로 SD카드나 외장메모리는 아무 앱이나 접근가능하지만, 앱 패키지 내의 폴더는 다른앱들이 접근 불가능하다. 이때, 해당 폴더의 데이터에 접근하고 이를 사용하고자 할때 사용하는 것이 Content Provider 이다. 대표적으로 카톡이 있겠다. 이놈은 설치만 하면 자동으로 주소록과 동기화하여 친구들을 마구 등록해 놓는다. 좋은 기능이기도 하지만 어찌보면 짜증나기도 하지만, 여하튼! 주소록 앱에서 Content Provider 를 제공하고, 이를 활용하여 카톡은 Content Resolver 라는 클래스를 통해 주소록 DB 에서 접근하여 정보를 가져오는 것이다.






출처 - http://manhdh.blog.me/120151839457

댓글()

ADT 안드로이드 프로젝트 구조

웹 & 안드로이드/Android|2013. 10. 1. 09:18

http://cafe.naver.com/jjdev/1004


안드로이드 프로젝트 구조.





 

 1. 프로젝트 클래스. 생성된 컴포넌트가 위치한다.


 2. 안드로이드는 포르젝트 내 모든 리소스, 객체는 R.java에 등록할 수 있으며 id를 부여, id 를 부여하여 관리한다.

  


 3. 컴파일 파일이 저장되는 폴더.

- 안드로이드 프로젝트는 컴파일 되면 .apk라는 파일로 컴파일 되고 이것은 안드로이드 전용 JVM(달빅)에 실행된다.


 4. 리소스 폴더.

- 문자열, 이미지, 배열등 해당. 뷰에 해당하는 레이아웃도 여기에 위치한다.

- assets/ 폴더와 /res 폴더가 있다.

- /res에는 리소스가 위치하며 모든 파일은 xml형태로 존재하며,

  모든 리소스의 메모리 주소값은 R.java에 등록이 되며 R.java를 통해 리소스를 참조 할수 있다.

assets/는 용량이 비교적 큰 리소스가 위치.


-drawable : 사진파일

-

 

 5. AndroidManifest.xml

- 프로젝트의 환경설정 파일(이름, 버전, 구성등에 대한 정보를 가진다.)



댓글()