*안드로이드가 데이터를 저장하는 4가지 방법
-shared perference(키 -값 쌍으로 저장 (액티비티 간 공유 가능)) -몇 개 안되는 데이터를 이용할때 사용
-File(내부에 저장 , 외부에 저장)
-SQLite(데이터베이스에 저장)
-Network(네트워크 서버에 저장)
4가지 모두 File 로 정의가 가능함,ㅋㅋ
*공유 환경설정( shared perference)-> XML 형태 저장
-데이터를 키-값 쌍으로 저장하고 다시 불러와 복원 할 수 있는 방법.
-저장한 데이터는 사용자 앱이 종료되어도 유지됨.
-활용 : 화면 전환 시 데이터 저장 및 로드를 위한 임시 저장에 활용
*내장 메모리 파일 처리
-내장 메모리의 저장 위치 : /data/data/패키지명/files 폴더
1.openFileOutput().openFileput()으로 파일열기
2.read() 또는 write() 으로 파일 읽기/쓰기
3.close()으로 파일 닫기
-가장 간단한 파일 생성 예시
FILE inFile = new FILE(context.getFilesDir(),"fileName");
-퍼미션 주의!!!!!
android.permission.WRITE_EXTERNAL_STORAGE
=> 파일을 읽고 쓰는데 제한이 있음. -> 제한된 폴더나 SD카드 -> 권한 설정 확인 필요.
*raw 폴더 파일 처리
-프로젝트의 /res/raw 폴더에 필요한 파일을 저장해서 사용
-openRawResource()메소드를 사용해서 접근
-프로젝트의 /res/raw는 프로젝트에 포함된 폴더이므로 읽기 전용만 가능
-raw 폴더 생성
*raw 폴더 파일 처리
-raw _ test.txt 파일 추가(파일 저장시 인코딩을 UTF-8로 선택하여 저장
직접 생성해서 복사로 추가하거나 소스 다운로드해서 08장의 사용그림 폴더에서 복사해 추가함.
.
*SD카드에서 파일 읽기( 버전에 따라 다르기에 확인 필요)
-테스트용 파일 (sd_text.txt)을 sdcard에 push하자
-androidManifest.xml 파일에 sd카드를 사용 할 수 있도록 퍼미션 지정!!
★sdcard 폴더 또는 /storage/emulated/0폴더에 upolad
★11버전에서 설정 방법
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
-퍼미션, 파일 경로명(/storage/emulated/0/Download/sd_test.txt) 주의
-11버전에서 APP퍼미션 설정 확인
*SD카드에 폴더 및 파일 생성하기
-Environment 클래스의 정적 메소드를 이용해 경로명을 구함.
(옛날 방식임.)
예시로 >>
final String strSDpath = Environment.getExternalStorageDirectory()
.getAbsolutepath();
final File mtDir = new File(strSDpath + "/mydir"); 를 이용해 파일을 찾음
만들때는 mkdir(); // 지울땐 delete();
*특정 폴더의 하위 폴더 및 파일 목록
-File.listFiles()를 이용하여 지정한 폴더의 하위 폴더 및 파일 목록 파악
*커스텀 뷰 만들기 정리
-(1) 새로운 클래스를 만들고 뷰를 상속받는다
public class myPictureView extends View
-(2) onDraw() 메소드 내에 출력할 코드를 작성한다.
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
.....
} => 다시 그리기 invalidate()->onDraw()호출
-(3) 새로 만든 뷰를 메인 액티비티에 추가한다.
<com.cokkandroid.project8_2.myPictureView
android:id="@+id/myPictureView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
// <com.cokkandroid.project8_2 이 부분은 본인의 패키지 이름으로 설정할 것.
간단한 이미지 뷰어 만들기
- myPictureView 커스텀 위젯 만들어 activity_main.xml에 넣어 사용
**그래픽의 기초
*그래픽을 그리기 위해 필요한 주요 클래스
-캔버스(canvas) : 도화지 같은 개념으로 뷰에 그릴 수 있도록 지원
- 페인트 (paint) : 붓 같은 개념으로 그리기에 필요한 색상 등 지원
*그래픽을 표현할 때는 View클래스를 재정의하는 형태를 많이 사용(아래 사진 참고)
*단축키 하나 추가요
-method override 하려면 "ctrl + O "
*캔버스 클래스 메소드
-점 그리기 => void drawPoint(float x, float y, paint paint)
-선 그리기 => void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
-사각형 그리기 => void drawRect(float left, float top, float right, float bottom, Paint paint)
-둥근 모서리 사각형 그리기 => void drawRoundRect(
-원 그리기 => void drawCircle(float cx, float cy, float radius, Paint paint)
-타원 그리기 => void drawOval(RectF oval, Paint paint)
* 캔버스 클래스 메소드
-아크 그리기 => void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
-패스 그리기 => void drawPath( Path path, Paint paint)
-비트맵 그리기 => void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
*선 그리기 속성
- setStrokeWidth : 선 두께 설정
-setStrokeCap : 선 시작과 끝 부분의 모양 설정
-setStrokeJoin : 선 연결 모양(직각, 둥근 등) 설정
*그래픽 처리 기본
-onDraw 메소드 오버라이딩 사용
*터치 이벤트( 뷰를 터치하면 발생)
-터치를 구현하려면 view 클래스의 onTouchEvent() 메소드 오버라이
event.getAction()으로 터치한 동작을 얻음.
ex >>
@override
public boolean onTouchEvent(MotionEvent event){
swich (event.getAction()){
case MotionEvent.ACTION_DOWN //손가락으로 화면을 누르기 시작했을 때 할일
break;
case MotionEvent.ACTION_MOVE: // 터치 후 손가락을 움직일 때 할 일
break;
case MotionEvent.ACTION_UP: // 손가락을 화면에서 뗄 때 할 일
break;
case MotionEvent.ACTION_CANCLE: // 터치가 취소 될 때 할 일
break;
default:
break;
}
return true;
}
** 전에 사용하던 소스와 비교 방법 : Compare With메뉴 사용
- (1) 소스에서 우측 마우스 클릭 Compare With선택 > 비교할 대상 선택 > 코드 비교