2016. 9. 18. 21:21

안녕하세요 


IT비전공자 프동프동 입니다.



인텐트를 이용한 액티비티 이동 방법



onClick,Component를 이용한 방법


activity_main.xml



<?xml version="1.0" encoding="utf-8"?>

<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"


    tools:context="com.example.donggyu.example_login.MainActivity">


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="onClick"/>


</RelativeLayout>




MainActivity.java


package com.example.donggyu.example_login;


import android.content.ComponentName;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;


public class MainActivity extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



    }


    public void onClick(View v)

    {

        Intent intent = new Intent();


        ComponentName componentName = new ComponentName(

                "com.example.donggyu.example_login",

                "com.example.donggyu.example_login.SubActivity");

        intent.setComponent(componentName);


        startActivity(intent);

    }

}



     ComponentName componentName = new ComponentName() 이동할 액티비티를 적어준다.




-이동할 액티비티를 만들어 준다.

activity_sub.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.donggyu.example_login.SubActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textSize="50dp" />
</RelativeLayout>

SubActivity.java

package com.example.donggyu.example_login;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class SubActivity extends AppCompatActivity {


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


}

●onClick, Intent를 이용한 방법


위에 MainActivity.java 코드만 바꿔주면 됩니다.


MaivActivity.java


package com.example.donggyu.example_login;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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


    }

    public void onClick(View v)
    {
        Intent intent = new Intent(getApplicationContext(),SubActivity.class);

        startActivity(intent);
    }
}



●Intent 객체를 생성과 동시에 실행하는 방법

MaivActivity.java


package com.example.donggyu.example_login;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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


    }

    public void onClick(View v)
    { startActivity(new Intent(this, SubActivity.class);
    }
}




공부함에 따라 다양한 방법을 추가하도록 하겠습니다.


Posted by 프동프동
2016. 9. 18. 21:20

안녕하세요 


IT비전공자 프동프동 입니다.


오늘은 지난시간에 이어 인텐트(Intent)에 대해, 그 중 암시적 인텐트(Implicit Intent) 배워보겠습니다.


명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)

명시적인텐트- 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우

  - 부 액티비티 사용시

  - 화면을 지정한 것 ex) MainActivitiy.class


암시적인텐트- 액션과 데이터를 지정하기는 했지만 호출할 대상이 달라질 수 있는 경우

-범주,타입,부가데이터

-외부 액티비티 사용시

ex)특정 화면을 지정하지 않은 것



activitiy_main.xml


<?xml version="1.0" encoding="utf-8"?>

<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="com.example.donggyu.example001_02.MainActivity">


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="전화걸기"

        android:id="@+id/button"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="74dp"

        android:padding="20dp"

        android:textSize="30dp"

        android:onClick="onButton1" />

</RelativeLayout>


MainActivitiy.java

package com.example.donggyu.example001_02;


import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;


public class MainActivity extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }



    public void onButton1(View v)

    {

        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:010-1234-1234"));

        startActivity(intent);

    }

}



public void onButton01(View v): 버튼을 클릭 했을 때 이 메소드를 호출한다라는 의미를 가집니다.

Intent intent = new Intent(Intent.ACTION_DIAL.Uri.parse("tel:010-1234-1234"));

인텐트로 연결을 시키는데, 암시적 인텐트 중 하나인 액션을 이용하는데, 액션 중 다이얼, 전화를 걸겠다. 라는 의미를 가집니다. 

startActivitiy(intent); 시작한다.

Posted by 프동프동
2016. 9. 18. 21:20

안녕하세요 


IT비전공자 프동프동 입니다.


지금까지 액티비티에 속한 뷰와 뷰 그룹에 대해 배워봤습니다.

이제는 실제로 뷰와 뷰 그룹이 속한 액티비티에 영혼을 불어넣는 과정을 배워보겠습니다.


액티비티를 실행하는 방법은 한가지가 아닌 몇가지 방법이 있습니다.


먼저 들어가기에 앞서 인텐트에 대해 간단히 정리하고 가겠습니다.

인텐트: 액티비티 뿐만 아니라 다양한 컴포넌트를 동작시키기 위한 매개체라고 합니다.

연결고리?


명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)

명시적인텐트- 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우

  - 부 액티비티 사용시

  - 화면을 지정한 것 ex) MainActivitiy.class


암시적인텐트- 액션과 데이터를 지정하기는 했지만 호출할 대상이 달라질 수 있는 경우

-범주,타입,부가데이터

-외부 액티비티 사용시

ex)특정 화면을 지정하지 않은 것






오늘은 명시적 인텐트(Explicit Intent)를 사용해서 앱을 구성해 보겠습니다.





먼저 A화면에서 버튼을 눌렀을 시 B화면이 생성되고 B화면에서 버튼을 눌렀을시 B화면이 꺼지는 동작을 하는 앱을 만들어 보겠습니다.


연결을 시키려면 먼저 연결시킬 a라는 액티비티와 b라는 액티비티가 필요합니다.


먼저 a에 역할을 하기위해 A라는 화면과 B화면으로의 이동을 위한 버튼을 하나 만들어 주겠습니다.


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

    <LinearLayout 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:orientation="vertical"

        tools:context="com.example.donggyu.example001_01.MainActivity">


        <TextView  <!--A화면이라고 알리기 위한 TextView-->

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="A화면"

            android:textSize="30dp"

            android:id="@+id/textView"


            android:layout_marginLeft="105dp"

            android:layout_marginStart="105dp" />


        <Button  <!--B화면으로의 이동을 위한 버튼--> 

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="B화면으로 이동"

            android:id="@+id/button"

            android:layout_marginTop="62dp"

            android:textStyle="bold"

            android:onClick="onButton01"

            />

</LinearLayout>



MainActivity.java
package com.example.donggyu.example001_01;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

    public void onButton01(View v)//버튼을 누르면..
    {
        Intent intent = new Intent(getApplicationContext(),BActivity.class);
                //Intent는 전달하는 우체부 같은 역할
        startActivity(intent);
                //startActivity() intent를 시작하기 위한 메소드
    }
}
 


여기 까지 만드시면 BActivity.class라는 글에 빨간줄이 뜰 것입니다. 
그것은 연결하려는 BActivity가 존재하지 않기 때문에 뜨는 것입니다.

이제 BActivity를 만들어보겠습니다.

 B화면의 구성을 XML로 만들어줍니다. 위에 했던 A화면 구성에서 글자만 바꿔주도록 하겠습니다.


activity_B.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.donggyu.example001_01.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="B화면"
        android:textSize="30dp"
        android:layout_marginLeft="105dp"
        android:layout_marginStart="105dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="B화면 종료/A화면으로 돌아가기"
        android:layout_marginTop="62dp"
        android:textStyle="bold"
        android:onClick="onButton01"
        />
</LinearLayout>
 
이제 B화면에서 버튼을 눌렀을시 화면이 사라지게, 꺼지게 하는 동작을 해보겠습니다.

BActivity.class
 
package com.example.donggyu.example001_01;

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

public class BActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
    }
    public void onButton01(View v)
    {
        finish();
    }
}

finish(): 현재 액티비티를 종료하겠다. 라는 의미를 가지고 있는 메서드 입니다.


맞다!! 참고로 
새로만든 BActivity는 menifast에 추가해주셔야 합니다. 

<?xml version="1.0" encoding="utf-8"?>
    package="com.example.donggyu.example001_01">

    <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>
        <activity android:name=".BActivity"></activity>
    </application>

</manifest>
이제 에뮬레이터에 구동해 보시면 끝!!
--------------------------------------

좀 더 응용해서 서로 데이터를 전달해주는 방식으로 변환을 해보겠습니다.

여기서는 데이터를 전달해주는 방법으로 부가데이터(Extar)를 사용합니다
부가데이터(Extra): 
-인텐트는 추가적인 정보를 넣을 수 있도록 번들 객체를 담고 있다.
-이 객체를 통해 인텐트 안에 더 많은 정보를 넣어 다른 애플리케이션 구성요소에 전달할 수 있다. 

MainActivity.class

package com.example.donggyu.example001_01;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onButton01(View v)
    {
        Intent intent = new Intent(getApplicationContext(),BActivity.class);
        intent.putExtra("word","ABC");
        startActivityForResult(intent,500);
    }
}


putExtra("word","ABC"); 데이터를 담기 위한 메소드
ex)내용물이 문자열 ABC인 데이터를 word라는 이름으로 보낸다.
startActivityForResult(intent,500);시작하겠다. 라는 의미를 가진 메소드
ex)a에서 b로 Intent를 사용하여 500번이란 번호로 전달하겠다.(액티비티가 많아질때 누구에게 요청했는지 번호로 알 수 있습니다.)

BActivity.class

package com.example.donggyu.example001_01;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class BActivity extends AppCompatActivity {

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

        Intent intent = getIntent(); //getIntent로 받아 볼 수 있다.
        //intent안에 extra가 들어있다.
        if(intent != null)
            //받은 데이터가 비어있을 수도 있으니 조건문으로 확인하며 받아준다.
        {
            String title = intent.getStringExtra("word");
            //받은 값이 문자열이니 문자열로 받아준다.
            Toast.makeText(getApplicationContext(),"전달 받은 데이터"+title,Toast.LENGTH_SHORT).show();
            
        }
    }
    public void onButton01(View v)
    {
        Intent intent = new Intent();
        intent.putExtra("meaning","거북이");
        //전해 주기 위한 메소드
        setResult(RESULT_OK,intent);
        //RESULT_OK 응답코드, 정상인지 아닌지 전달해주기 위한
        finish();
    }
}
 
MainActivity.class
package com.example.donggyu.example001_01;

        import android.content.Intent;
        import android.os.Bundle;
        import android.support.v7.app.AppCompatActivity;
        import android.view.View;
        import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onButton01(View v)
    {
        Intent intent = new Intent(getApplicationContext(),BActivity.class);
        intent.putExtra("word","ABC");
        startActivityForResult(intent,500);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(data != null) //data가 0이 아니면 실행하는 조건문
    {
        String meaning =  data.getStringExtra("meaning");
        //meaning라는 이름의 데이터가 있는지 확인후 받아온다.
        Toast.makeText(getApplicationContext(),"전달 받은 데이터"+meaning,Toast.LENGTH_SHORT).show();
    }
        super.onActivityResult(requestCode, resultCode, data);

    }
    //응답을 받기위한 메소드
}


Posted by 프동프동
2016. 9. 18. 21:19

레이아웃 인플레이션


인플레이션: XML레이아웃에 정의된 내용이 메모리에 객체화되는 과정


public lass MainActivity extends Activity{

@Override

publc void onCreate(savedInstanceState);

super.onCreate(savedInstanceState);  //내부적으로 인플레이션을 한다. 메모리상에 객체화 하는 과정


Button button1 = (Button) findViewById(R.id.button1); //인플레이션이 되어 메모리 상에 올라간다.

button.setText("시작됨");


setContentView(R.layout.activity_main);

}

}


---------------------------------------------------------------------------------------------------


public void setContentView(int layoutResID)

public void setContentView(View view[ViewGroup.LayoutParams params])


setContentView() 메소드의 역할

-화면에 나타낼 뷰를 지정하는 역할

-XML레이아웃의 내용을 메모리 상에 객체화 하는 역할



getSytemService(Context.LAYOUT_INFLATER_SERVICE)


*전체 화면 중에서 일부분만을 차지하는 화면 구성요소들을 XML레이아웃에서 로딩하여 보여주는 방법은

LayoutInflater 라는 클래스를 제공하며, 이 클래스는 시스템 서비스로 제공됨

단말이 시작되면 뒤에서 계속 동작하는 것들을 말한다. 


---------------------------------------------------------------------------------------------------



-안드로이드에서 화면: 소스와 화면 구성이 분리되어 있다.

자바소스 1개, XML레이아웃 1개


-화면 전체: 액티비티 -> setContentView 에서 인플레이션

액티비티를 위한 자바소스 1개 :MainActivity.java

액티비티를 위한 XML레이아웃 1개: activitiy_main.xml


-부분 화면 -> 수동으로 인플레이션

부분화면을 위한 자바소스 1개 또는 뷰(뷰가 1개의 소스 파일로 분리될 수 있음)

부분화면을 위한 XML레이아웃 1개: singer.xml


Posted by 프동프동
2016. 9. 18. 21:18

한번에 하나의 뷰만 보여주며, 다른 뷰들은 그 아래에 중첩되어 쌓임

중첩되는 효과와 함께 뷰의 가시성(Visibility) 속성을 이용해 다양한 화면 구성이 가능함


A,B 두개를 추가했을 경우 그 전것이 밑에 깔리게 된다 =>중첩

특정 뷰를 중첩 배치한다.


ex)중첩되어 있는 경우 A를 보여줬다가 B를 보여줬다가 할 수 있다.


사용될 때)

TAP버튼 과 같이 부분화면을 바꾸어 줄때 유용하게 사용된다.


가시성(Visibility)

-버튼을 이용하여 다른 이미지로 전환이 가능


xml레이아웃 코드 작성, 메인 엑티비티 코드 작성이 필요하다.


FrameLayout의 기본 속성

foreground: 이미지 설정, 겹치기도 가능

ex) android:foreground="@drawable/사진폴더"


foregorundGravity: 이미지의 중력 방향 설정

ex)android:foregrounGravity="left"

-left

-right

-bottom

-top

-center

등등

measureAllChildren: 자식 뷰가 gone 속성으로 사라졌을 때 사라진 자식의 영역을 계속 유지할지 유무 설정.

-true

-false

ex)android:measureAllChildren="true"



visibility: 가시성 설정


-visible 보이는 상태

-invisible 보이지 않는 상태

-gone 해당 뷰 그룹내에 존재하지 않는 상태


ex)android:visibility="invisible"



Posted by 프동프동
2016. 8. 27. 05:23

안녕하세요 


IT비전공자 프동프동 입니다.


오늘은 뷰(View)에 대해서 배워보겠습니다
배우기에 앞서 먼저 시간에 포스팅했던 글을 다시 보고 개념을 익혀볼까요

뷰(View)란?

 화면상의 보이는 모든 구성요소를 뷰(View)라고 합니다. 

예를 들면

 

뷰(View)는 위 처럼 버튼(Button)과 같이 사용자가 사용하기 위해 구성된 것이 뷰(View)입니다.

뷰(View)에는 크게 4가지가 있습니다

 1.사용자가 터치할 수 있는 기능을 가진 버튼(Button)

2.사용자가 키보드로 입력을 할 수 있는 에디트텍스트(EditText)

3.사용자가 볼 수 있는 글씨를 나타내기 위한 텍스트뷰(TextView)

4.사용자가 볼 수 있는 이미지뷰(ImageView)

 

 1.사용자가 터치할 수 있는 기능을 가진 버튼(Button)

text: 버튼에 글자를 넣을 수 있다.

background: 버튼의 배경색을 설정할 수 있다.



text: 버튼에 글자를 넣을 수 있다.

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이것은 버튼입니다."
/>

background: 버튼의 배경색을 설정할 수 있다.

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼"
android:background="#ff0"

2.사용자가 키보드로 입력을 할 수 있는 에디트텍스트(EditText)


hint: 사용자에게 어떤 내용을 입력할지 힌트식으로 알려주는 설정 입니다.

inputType: 사용자에게 다양한 입력 방법을 줄 수 있는 설정 입니다.

digits: 원하는 글자만 사용자에게 입력 받을 수 있다.


hint: 사용자에게 어떤 내용을 입력할지 힌트식으로 알려주는 설정 입니다.

-textColorHint: 기본적으로는 회색이지만 색상 변경이 가능합니다.

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="아이디를 입력하세요"


inputType: 사용자에게 다양한 입력 방법을 줄 수 있는 설정 입니다.

대표적으로

- number: 숫자만 입력가능 합니다.

-textEmailAddress: 이메일 형식 입력가능 합니다.

-numberPassword: 비밀번호 입력을 숫자로 한정지을 수 있습니다.

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"<!--숫자로만 입력 가능-->
/>


digits: 원하는 글자만 사용자에게 입력 받을 수 있다.

ex) 속성값을 qwer로 설정하면 소문자 qwer로만 입력 받을 수 있다

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="qwer"<!--소문자 qwer만 입력 가능-->
/>

 3.사용자가 볼 수 있는 글씨를 나타내기 위한 텍스트뷰(TextView)

다양한 글꼴을 설정하는 속성을 가지고 있습니다.

모든 과정은 xml에서 수정이 가능합니다.


text: 출력시 보여주기 위한 text 설정

textcolor: 출력시 보여주기 위한 글자의 색상을 지정할 수 있습니다.

textSize: 출력시 보여주기 위한 글자의 크기를 지정할 수 있습니다.

textStyle: 출력시 보여주기 위한 글자의 모양을 지정할 수 있습니다.

typeface: 출력시 보여주기 위한 글자체를 지정할 수 있습니다.

singleLine: 출력시 보여주기 위한 글자를 한줄로 표시 해줍니다.

등이 있습니다.


한번 자세히 볼까요?

moon_and_james-9


text: 출력시 보여주기 위한 text 설정

이렇게 Properties에서 text를 찾아서 바꿔주셔도 되고 



 

이렇게 가상핸드폰에 글자를 더블 클릭하셔서도 수정이 가능합니다.


textcolor: 출력시 보여주기 위한 글자의 색상을 지정할 수 있습니다.


...를 클릭하면 색상을 지정할 수 있습니다. 

또한 직접 키보드로 입력하셔도 색상을 선택할 수 있습니다.

textSize: 출력시 보여주기 위한 글자의 크기를 지정할 수 있습니다.


Properties-textSize에서 직접 숫자를 입력해주시고 치수를 선택해주시면 됩니다.

안드로이드 치수

-dpi(Dots Per Inch): 1인치에 들어 있는 픽셀의 수에 따라 설정이 가능합니다.

-dp(Density Independent Pixels): 화면의 크기를 기준으로 어떤 화면크기에서도 공일한 크기를 표시합니다.

-sp(Scale independent Pixels): dp와 비슷하지만 사용자가 선택한 글꼴 크기에 의해 크기가 조절됩니다.

그외에도 mm, in 등이 있으나, 많은 사람들이 dp를 사용하고 있습니다.

textStyle: 출력시 보여주기 위한 글자의 모양을 지정할 수 있습니다.

-italic: 글자를 기울여서 표시

-bold: 글자를 두껍게 표시한다.

*함께 사용하기 위해서는 사이에 |표시 를 추가하여 사용하면 된다

ex) itailc|bold


*함께 사용하기 위해서는 사이에 |표시 를 추가하여 사용하면 됩니다.

ex) bold|italic





typeface: 출력시 보여주기 위한 글자체를 지정할 수 있습니다.

-sans: 글자의 굵기가 같고 장식이 없습니다.

-serif: 글자의 굵기가 다르고 장식이 있습니다. 

-monospace: 폭을 설정할 수 있습니다.

 

 

 

singleLine: 출력시 보여주기 위한 글자를 한줄로 표시 해줍니다.



체크가 되어있지 않을시 내용이 길 경우 다음 줄로 자동 개행 됩니다.

이렇게 말이죠






체크시 한줄에 다 들어가게 됩니다. 

아래 예시 같은 경우 작은 공간에 한줄이 모두 들어가기 위하다 보니 ...으로 나타나게 됩니다.

 

이렇게요



우리가 작성한 xml을 한번 볼까요?

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="안녕하세요 IT비전공자 프동프동 입니다."
android:textColor="#fa0c0c"<!--글자 색상-->
android:textSize="20dp" <!--글자 크기-->
android:textStyle="bold|italic"<!--글자 모양-->
android:typeface="monospace" <!--글자체 설정-->
android:singleLine="true"<!--한줄에 모두 포함 시킬지 여부-->
/>



4.사용자가 볼 수 있는 이미지뷰(ImageView)

src:  사진을 설정할 수 있습니다. 

maxWidth: 이미지의 최대 수평넓이(길이)를 설정합니다.

maxHeight이미지의 최대 수직넓이(높이)를 설정합니다.



src:  사진을 설정할 수 있습니다. 

이미지뷰(imageView)의 메인이죠

src에서 원하는 이미지를 선택하기 위해선 한가지 작업이 필요합니다.

 

drawable 폴더에 자신이 원하는 사진을 넣어야 하는데요, 넣는 방법은 간단합니다. 원하는 사진을 ctrl+c ,ctrl+v 하면 끝납니다 ㅎ


ctrl+c를 누르면 이러한 화면이 "그냥 이곳에 복사할꺼냐 묻는 말입니다. OK를 눌러주세요.


 

바로 생기신걸 확인할 수 있습니다. 이제 사용이 가능합니다.

제가 아직 초보라 그런지는 모르겠는데..JEPG파일은 사용이 안되더라고요.... PNG파일만 되던데..왜그런지는...




이제 이미지를 넣을 이미지뷰를 선택하신 후 Properties에서 src를 찾아주세요 

그후 옆에보이는 ...을 클릭!

그러면 이러한 화면이 뜨는데요 이제 여기서 왼쪽 상단에 Drawable 클릭


쭈욱 내려보시면 아까 저희가 복사했던 사진이 여기 있네요!! 클릭 후 OK!!
 

짜잔~~


 

 

 

 

maxWidth: 이미지의 최대 수평넓이(길이)를 설정합니다.

maxHeight: 이미지의 최대 수직넓이(높이)를 설정합니다.





다음 포스팅에는 드디어 액티비티 실행과 JAVA를 이용하여 인텐트를!!

지금까지 배웠던 뷰와 뷰그룹에 영혼을 불어 넣어준다 생각하면 되려나...

Posted by 프동프동
2016. 8. 25. 09:21

안녕하세요 


IT비전공자 프동프동 입니다.


 

 

 

오늘은  뷰 그룹(ViewGroup) 중에서 프레임 레이아웃(FrameLayout)에 대해서 배워보겠습니다.


오늘도 역시나 들어가기에 앞서 지난 시간에 배운 것을 리뷰 해보겠습니다. 

뷰 그룹(View Group)이란?

뷰(View)들의 배치정보와, 뷰들의 모든 구성을 모아놓은? 공간이라고 보면 되겠습니다.

그래서 뷰는 혼자 올 수 없습니다. 공간이 없는데 어떻게 들어가겠어요?ㅎㅎ 

마치 뷰와 뷰그룹은 농사에 땅과 씨앗 같은? 것이라 생각하면 이해가 되실거에요 땅이 없으면 씨앗을 못 심잖아요ㅎㅎ

뷰가 다양하게 많듯이, 뷰 그룹또한 다양합니다.

뷰 그룹 마다 뷰들을 놓은 배치 방식이 다르다고 하네요. 

뷰 그룹(ViewGroup)은 크게 3가지가 있습니다.

1. 수평 수직으로 놓을 수 있는 리니어 레이아웃(LinearLayout)

2. a와 b가 서로 상대적으로 연결되어 있는 렐라티브 레이아웃(RelativeLayout)

3. 겹쳐서 사용 할 수 있는 프레임 레이아웃(FrameLayout)

프레임 레이아웃(FrameLayout)은 뷰를 중첩해서 위치시킬 수 있는 레이아웃 입니다.

프레임 레이아웃(FrameLayout):중첩 

FrameLayout 속성

foreground: 이미지를 설정합니다.

foregroundgravity: 이미지에 중력을 설정하는 것입니다.

measureAllChildren: 자식 뷰가 gone속성으로 사라졌을 때 사라진 자식을 계속 유지할지 유무 설정하는 것입니다.

true: 설정

false: 설정해제

measureAllChildren을 사용하려면 visibility와 함께 쓰이기에 알아두면 좋습니다.

visibility에는

visible: 보이는 상태

invisible: 보이지 않는 상태, FrameLayout의 영역을 차지하고 있습니다.

 gone: 보이지 않는 상태, FrameLayout의 영역을 차지하지 않고 있습니다.


다음 포스팅 부터는 뷰에 대해 조사 해오도록 하겠습니다.

다음 포스팅 부터는 직접 안드로이드 스튜디오에 돌려가며 공부하겠습니다!!

확실히 이쪽 분야는 직접 해봐야한다는...

Posted by 프동프동
2016. 8. 25. 09:20

안녕하세요 


IT비전공자 프동프동 입니다.


오늘은  ViewGroup 중에서 RelativeLayout에 대해서 배워보겠습니다.


지난 포스팅이 기억이 안나신다구요?


뷰 그룹(View Group)이란?

뷰(View)들의 배치정보와, 뷰들의 모든 구성을 모아놓은? 공간이라고 보면 되겠습니다.

그래서 뷰는 혼자 올 수 없습니다. 공간이 없는데 어떻게 들어가겠어요?ㅎㅎ 

마치 뷰와 뷰그룹은 농사에 땅과 씨앗 같은? 것이라 생각하면 이해가 되실거에요 땅이 없으면 씨앗을 못 심잖아요ㅎㅎ

뷰가 다양하게 많듯이, 뷰 그룹또한 다양합니다.

뷰 그룹 마다 뷰들을 놓은 배치 방식이 다르다고 하네요. 

뷰 그룹(ViewGroup)은 크게 3가지가 있습니다.

1. 수평 수직으로 놓을 수 있는 리니어 레이아웃(LinearLayout)

2. a와 b가 서로 상대적으로 연결되어 있는 렐라티브 레이아웃(RelativeLayout)

3. 겹쳐서 사용 할 수 있는 프레임 레이아웃(FrameLayout)


RelativeLayout은 자식 뷰 간의 서로 관계로 맺어져 있습니다. 

상대레이아웃 이라고 부르기도 한답니다.

그래서 저같은 초보일때는 다루기 쉬운 것 같으면서도 어렵다는;;;하나를 잘못 건들면 시공간이 어긋나듯이!!....

이해가 잘 안되시는 분들을 위해 더 자세히 설명하자면 

a를 기준으로 "b야 너 a 오른쪽에 붙어라"

"c야 너는 a 아래에 붙어라"

ㅋㅋㅋㅋㅋㅋ뭔가 이해되세여?  죄송합니다 이게 제 머리의 한계인듯;..

 

 

 

렐라티브 레이아웃(RelativeLayout):관계

렐...라...?렐러...?영어발음...그냥 이번엔 Relative라고 쭈욱 적을게요..

RelativeLayout 속성

layout_alignParent~~~

뒤에다가 어떠한 값을 쓰냐에 따라 위치가 달라집니다.

layout_alignParentRight: 부모 레이아웃 오른쪽에 위치

layout_alignParentLeft: 부모 레이아웃 왼쪽에 위치

layout_alignParentTop: 부모 레이아웃 에 위치

layout_alignParentBottom: 부모 레이아웃 아래에 위치

layout_centerInParent: 부모 레이아웃 정중앙에 위치

layout_centerVertical: 부모 레이아웃 수직 정중앙에 위치

layout_centerHorizontal: 부모 레이아웃 수평 정중앙에 위치


기준이 되는 뷰에 상대적으로 배치할 경우

layout_above=ID: 기준이 되는 뷰의 위에 위치

layout_alignTop=ID:기준이 되는 뷰의 위쪽에서 아래 방향으로 위치

layout_alignBottom=ID: 기준이 되는 뷰 아래에서 위 방향으로 위치

layout_below=ID: 기준이 되는 뷰 아래에 아래쪽 방향으로 위치

layout_toLeftOf=ID: 기준이 되는 뷰 왼쪽에 위치

layout_alignLeft=ID: 기준이 되는 뷰 왼쪽의 오른쪽에 위치

layout_toRightOf=ID: 기준이 되는 뷰 오른쪽에 오른쪽으로 배치

layout_alignRight=ID: 기준이 되는 뷰 오른쪽에 왼쪽으로 배치

layout_alignBaseLing: 기준이 되는 뷰에 글자가 있을 경우, 같은 선에 위치

 ex) android:layout_above="@id/textview1"

필요할 때마다 찾아서 사용하는 식으로 이해만 하고 가세요 ㅎㅎ 



오늘도 역시 힘든 안드로이드...

Posted by 프동프동
2016. 8. 25. 05:27

안녕하세요


IT비전공자 프동프동 입니다.


지난시간에 이어 뷰 그룹에 대해 조금 더 자세히 알아보도록 하겠습니다. 


먼저 앞서 배운 뷰 그룹에 대해 리뷰 해볼까요?


뷰 그룹(View Group)이란?

뷰(View)들의 배치정보와, 뷰들의 모든 구성을 모아놓은? 공간이라고 보면 되겠습니다.

그래서 뷰는 혼자 올 수 없습니다. 공간이 없는데 어떻게 들어가겠어요?ㅎㅎ 

마치 뷰와 뷰그룹은 농사에 땅과 씨앗 같은? 것이라 생각하면 이해가 되실거에요 땅이 없으면 씨앗을 못 심잖아요ㅎㅎ

뷰가 다양하게 많듯이, 뷰 그룹또한 다양합니다.

뷰 그룹 마다 뷰들을 놓은 배치 방식이 다르다고 하네요. 

뷰 그룹(ViewGroup)은 크게 3가지가 있습니다.

1. 수평 수직으로 놓을 수 있는 리니어 레이아웃(LinearLayout)

2. a와 b가 서로 상대적으로 연결되어 있는 렐라티브 레이아웃(RelativeLayout)

3. 겹쳐서 사용 할 수 있는 프레임 레이아웃(FrameLayout)


기억나시죠?

위처럼 뷰 그룹은 대표적으로 3~4가지 정도로 축약되어 지는데요 

오늘은 위 3가지 뷰 그룹(ViewGroup)에 대해 각각의 속성에 대해 알아보도록 하겠습니다. 

그 중 LinearLayout에 대해서~

여기서는 뷰 그룹을 레이아웃이라고 부르겠습니다.


먼저 대표적인 레이아웃 속성을 살펴보겠습니다.

layout_width: 수평 길이를 정할 수 있습니다.

layout_height: 수직 길이를 정할 수 있습니다.

*이 속성 값에는 두가지가 있습니다. 

wrap_content: 뷰(View)안에 들어있는 것에 알아서 맞추기

match_parent: 부모 뷰그룹(ViewGroup)에 맞추기

orientation:자식 뷰들의 위치를 수직 수평으로 설정할 수 있습니다.

padding:위,아래,양측 여백을 설정할 수 있습니다.

gravity: 말그대로 자식 뷰에게 중력을 주어서 이동시킵니다.

layout_weight: 전체 화면을 100이라 주고 자식뷰 들에게 비율로 크기를 부여할 수 있습니다.

 


자 이제 본격적으로 알아보겠습니다.

상당히 많은 속성을 가지고 있기 때문에 다 해보시기 보다는 필요할 때 찾아보는 방법으로 공부하는게 좋을 것 같아요....


리니어 레이아웃(LinearLayout):수평,수직


LinearLayout 속성

orientation: 뷰(View)를 수평으로 놓을지 수직으로 놓을지에 대해 설정할 수 있습니다.

vertical:수직배치

horizontal:수평배치

ex) android:orientation="vertical"

gravity: 뷰(View)에게 중력을 주는 것입니다! 

top: 상단에 배치

bottom: 아래에 배치

right: 오른쪽에 배치

left: 왼쪽에 배치

center: 중앙에 배치

center_vertical: 수직 가운데에 배치

center_horizontal:수평 중앙에 배치 

ex) android:gravity="right"

baselineAligned:글자가 들어있는 뷰 중에서 가장 크기가 큰 뷰를 기준으로 정렬합니다

true: 정렬

false: 정렬하지 않음

*수평으로 배치된 경우에만 적용이 된다네요.

ex) android:baselineAligned="true"

baselineAlignedChildIndex: 글자가 들어있는 뷰 중에서 특정 뷰를 기준으로 정렬합니다.

*숫자를 대입하여 특정뷰를 정합니다.

ex) android:baselineAlignedChildIndex="1"

measureWithLargestChild: 가장 큰 넓이의 자식 뷰로 크기를 맞춘다고 합니다

true:크기 맞추기

false:크기 맞추지 않기

*수평배치 경우 길이 조정, 수직배치 경우 높이 조정

ex) android:measureWithLargestChild="false"

weightSumlayout_weight:  전체 비율을 정하여 자식 뷰에게 비율을 사용하여 크기를 정해줄 수 있습니다.

Posted by 프동프동
2016. 8. 25. 05:26

안녕하세요


IT비전공자 프동프동 입니다.


오늘은 지난 시간에 이어 Activity에 대해 집중적으로!!! 공부해보는 시간을 가져보도록 하겠습니다.


액티비티(Activity): 

사용자에게 보여지는 화면을 제공합니다. 

어플을 실행 시켰을 때, 보여지는 화면 모두가 액티비티라고 보면 되겠네요.


액티비티는 하나의 화면으로 보이지만, 그 속을 들여다 보면 와 뷰 그룹으로 만들어져 있습니다. 


뷰(View)란?

 화면상의 보이는 모든 구성요소를 뷰(View)라고 합니다. 

예를 들면

 

뷰(View)는 위 처럼 버튼(Button)과 같이 사용자가 사용하기 위해 구성된 것이 뷰(View)입니다.

뷰(View)에는 크게 4가지가 있습니다

 1.사용자가 터치할 수 있는 기능을 가진 버튼(Button)

2.사용자가 키보드로 입력을 할 수 있는 에디트텍스트(EditText)

3.사용자가 볼 수 있는 글씨를 나타내기 위한 텍스트뷰(TextView)

4.사용자가 볼 수 있는 이미지뷰(ImageView)

다음은 뷰 클래스의 상속도 입니다.

 

뷰 클래스를 모두 상속하고 있습니다.

뷰 그룹(View Group)이란?

뷰(View)들의 배치정보와, 뷰들의 모든 구성을 모아놓은? 공간이라고 보면 되겠습니다.

그래서 뷰는 혼자 올 수 없습니다. 공간이 없는데 어떻게 들어가겠어요?ㅎㅎ 

마치 뷰와 뷰그룹은 농사에 땅과 씨앗 같은? 것이라 생각하면 이해가 되실거에요 땅이 없으면 씨앗을 못 심잖아요ㅎㅎ

뷰가 다양하게 많듯이, 뷰 그룹또한 다양합니다.

뷰 그룹 마다 뷰들을 놓은 배치 방식이 다르다고 하네요. 

뷰 그룹(ViewGroup)은 크게 3가지가 있습니다.

1. 수평 수직으로 놓을 수 있는 리니어 레이아웃(LinearLayout)

2. a와 b가 서로 상대적으로 연결되어 있는 렐라티브 레이아웃(RelativeLayout)

3. 겹쳐서 사용 할 수 있는 프레임 레이아웃(FrameLayout)

다음은 뷰 그룹 클래스의 상속도 입니다.

모두 뷰(View)를 상속 하고 있습니다.  

그러면 이것들을 어떻게 사용할까요?



제가 문제 내볼게요 ㅎ

어떤 것이 뷰(View)이고 어떤 것이 뷰 그룹(ViewGroup)인지 영역을 표시해보세요.

아시겠어요?

정답은

New Button이라고 써있는 것이 뷰(View)이고

노란색 바탕 부분이 뷰 그룹(ViewGroup)입니다.


아래 그림을 보고 구성을 보시면
 

뷰 그룹(ViewGroup) 안에 버튼(Button)이라는 뷰(View)들이 3개가 들어있는게 보이실 거에요.

위에 배운 것과 같이 LinearLayout은 수평, 수직으로 뷰(View)를 구성시킬 수 있는 뷰 그룹(ViewGroup)입니다.

그래서 버튼이 직렬로 쫘~악~ 있는 것이죠


그럼 이제 xml코드를 한번 살펴 볼까요?

<?xml version="1.0" encoding="utf-8"?>
<!--LinearLayout 뷰그룹 시작-->
<LinearLayout 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"
tools:context="com.test.example03.MainActivity"
android:background="#FF0">

<!--(View)-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<!--(View)-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<!--(View)-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button3"
android:layout_below="@+id/button2"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2" />
</LinearLayout>
<!--LinearLayout 뷰그룹 끝-->

오늘은 다른 것은 보지 않고 어떤게 뷰(View)이고 어떤것이 뷰그룹(ViewGroup)인지 아시면 될 것 같습니다.


뷰(View)와 뷰 그룹(ViewGroup)을 찾아보시면 엄청 다양한 것들이 보이실거에요.ㅠㅠㅠㅠ


그래도 걱정하지 않아도 되는게

개발시 필요한 부분을 찾아서 만들면 되니까 다 외우지 않아도 된다고 하네요 ㅎㅎ 


이번에 뷰(View)와 뷰그룹(ViewGroup)에 대해 간단하게 배웠으니, 

다음 포스팅 때는 이제 각각의 속성을 조절하는 방법에 대해 적어보겠습니다.

Posted by 프동프동