OpenFrameWork

오픈프레임워크_Day74

px 2015. 6. 29. 11:57
### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도 
,,, : 같은 목차 내에 구분 기호

목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드 또는 실습
4. 과제

###################################
1. 이론 및 정보
-----------------------------------
* 안드로이드에서 간단한 파일 저장 클래스
SharedPreferences
----------------------------------- 
AndroidManifest.xml 에서 메인 변경

<intent-filter>를 가지고 있으면 메인이 됨
----------------------------------- 
android:visibility="gone"
gone은 객체 생성은 안함
invisible은 생성 되는데 안보이게
visible은 생성 되고 보이게
----------------------------------- 
* LogCat
안드로이드에서 사용하는 로그 확인 프로그램
-----------------------------------  
###################################
2. 설정 및 그 밖에
-----------------------------------
* LogCat
vervose - 모든 메세지
asset - 테스트 관련

로그캣 필터 만들기


----------------------------------- 
* 프로젝트 생성 - AdapterApp
----------------------------------- 
----------------------------------- 
###################################
3. 소스코드 또는 실습 
-----------------------------------
3-1
WorkSpace : ~\study\AndroidWork  
/BasicWidgetApp/AndroidManifest.xml

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

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
        </activity>
        <activity android:name="SecondAcitivity" >
        </activity>
        <activity android:name="ThirdActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>
----------------------------------- 
3-2
WorkSpace : ~\study\AndroidWork 
/BasicWidgetApp/res/layout/activity_second.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- autotext : 자동 철자 교정 기능 사용여부 (true, false) -->
    <!-- capitalize : 입력된 텍스트의 첫번째 글자를 대문자로 자동변경 -->
    <!-- numeric : 숫자만 입력 가능 -->
    <!-- digits : 특정 데이터만 입력 가능 -->
    <!-- ... -->

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Input Here!..."
        android:maxLength="30"
        android:maxWidth="200sp"
        android:singleLine="true"
        android:textColor="#FF0000FF"
        android:textStyle="bold|italic" />

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:digits="abc"
        android:hint="Input Here!..."
        android:maxWidth="200sp"
        android:textColor="#FF0000FF" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onBtnDisplay"
        android:text="EditText Content Display" />

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <CheckBox
            android:id="@+id/chk1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Student" />

        <CheckBox
            android:id="@+id/chk2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Salaryman" />

        <CheckBox
            android:id="@+id/chk3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Teacher" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioGroup
            android:id="@+id/rg1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <RadioButton
                android:id="@+id/rdo1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="seoul" />

            <RadioButton
                android:id="@+id/rdo2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="paris" />

            <RadioButton
                android:id="@+id/rdo3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="london" />
        </RadioGroup>
    </LinearLayout>

    <ToggleButton
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOff="Turn off..."
        android:textOn="Turn on..." />

    <RatingBar
        android:id="@+id/rBar"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isIndicator="false"
        android:numStars="5"
        android:rating="1.5"
        android:stepSize="0.5" />

</LinearLayout>
----------------------------------- 
3-3
WorkSpace : ~\study\AndroidWork 
/BasicWidgetApp/res/layout/activity_third.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progress1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <ToggleButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="progressCircle"
        android:textOff="Circle Start"
        android:textOn="Circle Exit" />

    <ProgressBar
        android:id="@+id/progress2"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="50"
        android:progress="10" />

    <ToggleButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="progressHorizontal"
        android:textOff="Horizontal Start"
        android:textOn="Horizontal Exit" />

    <SeekBar
        android:id="@+id/seek1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:max="20"
        android:progress="5" />

    <TextView
        android:id="@+id/tvSeek"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="5" />

</LinearLayout>
----------------------------------- 
3-4
WorkSpace : ~\study\AndroidWork 
/BasicWidgetApp/src/com/example/basicwidgetapp/SecondAcitivity.java

package com.example.basicwidgetapp;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class SecondAcitivity extends Activity {
     EditText et1, et2;
     TextView tv1, tv2;
     CheckBox c1, c2, c3;
     RadioGroup rg;
     SharedPreferences shared;
     ToggleButton tButton;
     RatingBar rBar;

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);
          et1 = (EditText) findViewById(R.id.et1);
          et2 = (EditText) findViewById(R.id.et2);
          tv1 = (TextView) findViewById(R.id.tv1);
          tv2 = (TextView) findViewById(R.id.tv2);
          c1 = (CheckBox) findViewById(R.id.chk1);
          c2 = (CheckBox) findViewById(R.id.chk2);
          c3 = (CheckBox) findViewById(R.id.chk3);
          CheckHandler ch = new CheckHandler();
          c1.setOnCheckedChangeListener(ch);
          c2.setOnCheckedChangeListener(ch);
          c3.setOnCheckedChangeListener(ch);
          rg = (RadioGroup) findViewById(R.id.rg1);
          rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
               @Override
               public void onCheckedChanged(RadioGroup group, int checkedId) {
                    if (group.getId() == R.id.rg1) {
                         String city = null;
                         if (checkedId == R.id.chk1) {
                              city = "seoul";
                         } else if (checkedId == R.id.chk2) {
                              city = "paris";
                         } else if (checkedId == R.id.chk3) {
                              city = "london";
                         }
                         Toast.makeText(getApplicationContext(),
                                   city + " is Checked", Toast.LENGTH_SHORT).show();
                    }
               }
          });

          // 무명클래스로 TextWatchr 사용
          TextWatcher tw = new TextWatcher() {
               @Override
               public void onTextChanged(CharSequence s, int start, int before,
                         int count) {
                    tv2.setText(String.valueOf(s.length()));
               }

               @Override
               public void beforeTextChanged(CharSequence s, int start, int count,
                         int after) {
               }

               @Override
               public void afterTextChanged(Editable s) {
               }
          };
          et1.addTextChangedListener(tw);
          tButton = (ToggleButton)findViewById(R.id.toggle);
          
          // SharedPreferences에서 값이 있는지 확인
          shared = getSharedPreferences("toggleOnOff", MODE_PRIVATE);
          if(shared.getString("onoff", "").equals("on")){
               tButton.setChecked(true);
          }else if(shared.getString("onoff", "").equals("off")){
               tButton.setChecked(false);
          }          
          
          tButton.setOnClickListener(new OnClickListener() {
               // SharedPreferences의 자격을 얻는 방법
               SharedPreferences.Editor editor = shared.edit();
               
               @Override
               public void onClick(View v) {
                    if(tButton.isChecked()==true){
                         editor.putString("onoff", "on");
                    }else{
                         editor.putString("onoff", "off");
                    }
                    // SharedPreferences에서 주의사항
                    // 뒷마무리, 반드시 해줘야함
                    editor.commit();
               }
          });
          
          rBar = (RatingBar) findViewById(R.id.rBar);
          rBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
               @Override
               public void onRatingChanged(RatingBar ratingBar, float rating,
                         boolean fromUser) {
                    Toast.makeText(getApplicationContext(),
                              String.valueOf(rating) + " 별 선택 됨", Toast.LENGTH_SHORT).show();
               }
          });
     }

     public void onBtnDisplay(View v) {
          tv1.setText(et1.getText());
     }

     class CheckHandler implements OnCheckedChangeListener {
          @Override
          public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
               CheckBox ck = (CheckBox) buttonView;
               if (isChecked == true) {
                    Toast.makeText(getApplicationContext(),
                              ck.getText() + " is Checked", Toast.LENGTH_SHORT).show();
               } else {
                    Toast.makeText(getApplicationContext(),
                              ck.getText() + " is unChecked", Toast.LENGTH_SHORT).show();
               }
          }
     }
}
----------------------------------- 
3-5 
WorkSpace : ~\study\AndroidWork 
/BasicWidgetApp/src/com/example/basicwidgetapp/ThirdActivity.java

package com.example.basicwidgetapp;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.ToggleButton;

public class ThirdActivity extends Activity {
     ProgressBar m_circle, m_horizontal;
     boolean isRunning = false;
     SeekBar seekBar;
     TextView tvSeek;

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_third);
          m_circle = (ProgressBar) findViewById(R.id.progress1);
          m_horizontal = (ProgressBar) findViewById(R.id.progress2);
          seekBar = (SeekBar) findViewById(R.id.seek1);
          tvSeek = (TextView) findViewById(R.id.tvSeek);

          seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
               @Override
               public void onStopTrackingTouch(SeekBar seekBar) {

               }

               @Override
               public void onStartTrackingTouch(SeekBar seekBar) {

               }

               @Override
               public void onProgressChanged(SeekBar seekBar, int progress,
                         boolean fromUser) {
                    tvSeek.setText("current : "+ progress);
               }
          });
     }

     public void progressCircle(View v) {
          Log.d("ThirdActivity", "progressCircle Method Call");
          ToggleButton t = (ToggleButton) v;
          if (t.isChecked()) {
               m_circle.setVisibility(View.VISIBLE);
          } else {
               m_circle.setVisibility(View.GONE);
          }
     }

     public void progressHorizontal(View v) {
          ToggleButton t = (ToggleButton) v;
          if (t.isChecked()) {
               // 쓰레드 교착상태로 안됨
               // for (int i = 11; i < 50; i++) {
               // try {
               // Thread.sleep(1000);
               // } catch (InterruptedException e) {
               // e.printStackTrace();
               // }
               // m_horizontal.incrementProgressBy(i);
               // }

               new HorizontalThread().start();
               isRunning = true;
          } else {
               isRunning = false;
          }
     }

     class HorizontalThread extends Thread {
          @Override
          public void run() {
               int i = 0;
               while (isRunning) {
                    try {
                         Thread.sleep(1000);
                    } catch (InterruptedException e) {
                         e.printStackTrace();
                    }
                    if (i == 50) {
                         i = 0;
                         m_horizontal.setProgress(i);
                    }
                    i += 10;
                    m_horizontal.incrementProgressBy(i);
               }
          }
     }
}
----------------------------------- 
3-6
WorkSpace : ~\study\AndroidWork 
/AdapterApp/AndroidManifest.xml

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

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="ListViewAcitivity"></activity>
        <activity android:name="SpinnerViewAcitivity"></activity>
        <activity android:name="AutoAcitivity"></activity>
        <activity android:name="GalleryAcitivity"></activity>
        <activity android:name="GridViewAcitivity"></activity>
        <activity android:name="FlipperAcitivity"></activity>
    </application>

</manifest>
----------------------------------- 
3-7 
WorkSpace : ~\study\AndroidWork 
/AdapterApp/res/layout/activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use ListView" />

    <Button
        android:id="@+id/btnSpinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use SpinnerView" />

    <Button
        android:id="@+id/btnAuto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use AutoCompleteTextView" />

    <Button
        android:id="@+id/btnGallery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use Gallery" />

    <Button
        android:id="@+id/btnGrid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use GridView" />

    <Button
        android:id="@+id/btnFlipper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="How to use ViewFlipper" />

</LinearLayout>
----------------------------------- 
3-8 
WorkSpace : ~\study\AndroidWork 
/AdapterApp/src/com/example/adapterapp/MainActivity.java

package com.example.adapterapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
     Button btnList, btnSpinner, btnAuto, btnGallery, btnGrid, btnFlipper;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          btnList = (Button) findViewById(R.id.btnList);
          btnSpinner = (Button) findViewById(R.id.btnSpinner);
          btnAuto = (Button) findViewById(R.id.btnAuto);
          btnGallery = (Button) findViewById(R.id.btnGallery);
          btnGrid = (Button) findViewById(R.id.btnGrid);
          btnFlipper = (Button) findViewById(R.id.btnFlipper);

          btnList.setOnClickListener(this);
          btnSpinner.setOnClickListener(this);
          btnAuto.setOnClickListener(this);
          btnGallery.setOnClickListener(this);
          btnGrid.setOnClickListener(this);
          btnFlipper.setOnClickListener(this);
     }

     @Override
     public void onClick(View v) {
          Button b = (Button) v;
          Intent intent = null;
          switch (b.getId()) {
          case R.id.btnList:
               intent = new Intent(getApplicationContext(), ListViewAcitivity.class);
               break;
          case R.id.btnSpinner:
               intent = new Intent(getApplicationContext(), SpinnerViewAcitivity.class);
               break;
          case R.id.btnAuto:
               intent = new Intent(getApplicationContext(), AutoAcitivity.class);
               break;
          case R.id.btnGallery:
               intent = new Intent(getApplicationContext(), GalleryAcitivity.class);
               break;
          case R.id.btnGrid:
               intent = new Intent(getApplicationContext(), GridViewAcitivity.class);
               break;
          case R.id.btnFlipper:
               intent = new Intent(getApplicationContext(), FlipperAcitivity.class);
               break;
          }
          if (intent != null) {
               startActivity(intent);
          }
     }

     @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;
     }

     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
          if (id == R.id.action_settings) {
               return true;
          }
          return super.onOptionsItemSelected(item);
     }

}
-----------------------------------  
###################################
4. 과제
-----------------------------------
4-1
프로젝트 문서 만들기, 프로젝트 수정해서 말씀드리기
----------------------------------- 
4-2
----------------------------------- 
4-3
----------------------------------- 
4-4
----------------------------------- 
4-5
/BasicWidgetApp/src/com/example/basicwidgetapp/SecondAcitivity.java
에서 checkBox 안됨 
-----------------------------------
###################################
5. 과제 해결
-----------------------------------
-----------------------------------
###################################
6. 기타
----------------------------------- 
-----------------------------------