본문 바로가기

분류 전체보기117

간단한 코딩으로 큰따음표("")로 묶인 CSV 파일 보기 CSV란 콤마(,)로 구분한 일련의 데이터들을 말한다. 예를 들면 아래와 같다. 고양이,강아지,곰,상어,토끼 100,20,55,177,83 이런 형식은 서로 호환 되지 않는 프로그램끼리 데이터들을 주고 받을때 유용하게 쓰인다. 또한 매우 간단하기 때문에 부담도 없다. 하지만 흔한 문제점 하나가 있다. 콤마가 있는 데이터가 있을 경우다. 56 10,000 1,500 300 890 2,360,050 74 금액을 표시할때 위와 같이 종종 단위 콤마를 쓰는데 이것을 CSV로 표현하면, 56,10,000,1,500,300,890,2,360,050,74 가 된다. 의도와는 다르게 데이터가 56 10 100 1 500 300 890 2 360 050 74 로 나누어져 버렸다 그래서 콤마가 있는 데이터를 큰따음표("".. 2016. 11. 14.
막대 그래프의 처음은 이렇게 가장 기본이 되는 그래프인 막대 그래프를 만들어 보자~ 위와 같이 막대와 그 수치를 넣을 것이다 예전에 올렸던 꺽은선 그래프를 살짝 변경해서 코딩했다. private Paint mLinePaint, mTextPaint; private float mTextGap; private int[] mPoints, mPointX, mPointY; private int mUnit, mOrigin, mDivide; public GraphView(Context context, AttributeSet attrs) { super(context, attrs); setTypes(context, attrs); } //그래프 옵션을 받는다 private void setTypes(Context context, AttributeSet .. 2016. 10. 24.
재귀 함수의 완벽한 이해 재귀 함수란 자기 자신을 다시 호출하는 함수를 말한다. 하지만 이러한 개념을 알고 있어도 직접 구현할려고 하면 헷갈린다. 특히, 분기를 위한 반복문이 함수내에 들어간다면 더더욱 그렇다. 거리 계산 다이어그램을 예로 해서 살펴보자 위 다이어그램의 숫자들은 각 점끼리의 거리이다. 즉, 총 거리는 숫자들을 모두 더한 13이고, D까지는 3 + 2 + 4 = 9가 된다. 재귀 함수로 코드화 해보자 private static int NAME_A = 0; private static int NAME_B = 1; private static int NAME_C = 2; private static int NAME_D = 3; private static int NAME_E = 4; private static int NAME.. 2016. 9. 26.
오전과 오후가 만나는 곳 실미도 해수욕장 서울에서 가장 가기 쉬운 바닷가하면~ 인천이겠죠~ 그중에서도 영종고속도로로 한방에 뚫려있는 무의도는 단연 최고에요ㅎㅎ 무의도로 들어갈려면 일단 배를 타야 하는데요~ 차를 가지고 왔다면 2만원에.. 사람 한명당 3,800원을 내면 왕복 가능해요 저기 보이는 배로 가는거죠~ 배를 타면 새우깡을 먹고사는 갈매기가 따라오죠 엄청 빨리 도착합니다. 거리가 별로 안돼요ㅎㅎ 그래서 인지 무의도와 연결되는 다리가 공사중이에요... 사진의 왼쪽에 보이시죠 아마 조만간 배를 타지 않아도 될듯 하네요... 갈매기들의 밥줄이 끊기는 거죠ㅠ 무의도에는 두개의 해수욕장이 있는데요.. 하나개와 실미도입니다 하나개가 좀더 크긴한데 실미도를 보기 위해 실미 해수욕장으로 가보죠~ 주차비는 하루동안 5000원!! 오전이에요~ 사람도 별로.. 2016. 8. 15.
TimePicker, DatePicker, NumberPicker의 폰트 바꾸기 시간을 쉽게 선택할 수 있는 TimePicker, 날짜를 쉽게 선택할 수 있는 DatePicker 이것들은 NumberPicker로 이루어진 UI이다. 그래서 이 Picker들의 폰트를 바꾸기 위해서는 NumberPicker의 구조를 알아야 한다. NumberPicker는 현재 선택된 숫자를 보여주는 TextView와 그 주위의 숫자를 스크롤하며 보여주는 휠 뷰로 구성된다. (스타일을 Theme.Holo.Light 로 적용했을 경우) 즉, 폰트를 바꿔줄때 이 두가지를 모두 바꿔줘야 한다는 의미다. public void setTypeface(NumberPicker picker, Typeface typeface) { //주위의 숫자들을 보여주는 휠 뷰 try { //클래스의 휠 Paint 객체를 꺼내 폰트를.. 2016. 7. 18.
더이상 뛰지말고 열차 전광판을 손에 쥐고 다니자~ 지하철 역안에 들어가서야 어! 열차 오네!! 뛰자!!! 하는 겸험이 누구나 있을거에요... 스마트한 시대에도 이러면 안될것 같아 부족한 실력에도 연구에 연구를 거듭해 만들었죠.. 그게 2011년도 일이니... 꽤 오래됬네요... 그리고 발전에 발전을 거듭해 여기까지 왔어요~ 노선도위를 열차가 이렇게 막 다니죠... 노선도 전체가 전광판인 셈이에요 특히, 급행을 빨갛게 강조해 놨어요~ 저는 급행이 언제 올지가 가장 궁금해서요ㅎㅎ 맵을 손가락으로 쫙~ 더 확대하면 상하선 열차가 서로 다른 줄로 움직여요~ 한줄에 있으면 겹쳐서 안 보일때가 있더라고요ㅎㅎ 열차 전체 시간표도 볼수 있어요~ 원래 시간표에는 초단위가 00초나 30초처럼 0으로 끝나는데... 8로 끝나죠? 이건 실시간 지연정보를 더해서 그래요... .. 2016. 6. 27.
카메라 위에 스킨을 넣어 찍어보자~ 카메라 사진 위에 그림이나 글자를 넣어 찍고 싶다면?? 의외로 간단하다... 아래를 보시라~ 사진을 찍을려면 먼저 카메라를 연동해야 한다. 이부분은 비록 복잡해 보이지만 어차피 안드로이드 샘플 예제에 다 나오는 내용이다. 그런데 룰리팝 이후로 카메라 연동방법이 바뀌는 바람에 다시 삽질좀 하며 작성했다ㅎㅎ 이글의 주제는 카메라 연동이 아니니 참고만... 설명도 생략... private CameraManager mCameraManager; private CameraDevice mCameraDevice; private Camera mCamera; private Size mPreviewSize; private CaptureRequest.Builder mPreviewBuilder, mPictureBuilder; .. 2016. 5. 30.
초간단 꺽은선 그래프 만들기 그래프는 텍스트로 표현하기 복잡한 정보를 한결 보기좋게 만드는 매력이 있다. 그래서 간편함의 상징인 모바일에서는 빠질수 없는 요소이다. 특히 많이 쓰이는 것이 막대 그래프와 꺽은선 그래프 일것이다. 그런데 꺽은선 그래프는 선이 하나로 이어져 있기 때문에 만드는데 애를 먹을때가 있다 그때를 대비해 초간단 꺽은선 그래프뷰를 만들어 놓자~ 구미에 맞게 확장해서 쓰면 매우 유용하다 public class GraphView extends View { private ShapeDrawable mLineShape; private Paint mPointPaint; private float mThickness; private int[] mPoints, mPointX, mPointY; private int mPointSiz.. 2016. 4. 25.
버튼의 Selector 이미지를 간절히 가져오고 싶다면? 보통 Selector를 xml로 아래와 같이 만들어 놓는다. 그리고 버튼 background에 적용한다. 별로~ 그럴일은 없지만 만약 이 selector의 android:drawable 이미지를 자바 코드상으로 불려오고 싶다면?? private Drawable[] getPressImages(View v) { //Selector 이미지를 StateListDrawable 객체로 불러옴 StateListDrawable statedrawable = (StateListDrawable)v.getBackground(); if(statedrawable != null) { try { //Veiw의 현재 이미지 상태를 배열에 가져옴 int[] currentstate = v.getDrawableState(); //이미지를 .. 2016. 3. 28.
일반뷰를 맵뷰처럼 밀어서 스크롤 시키기 맵뷰나 스크롤뷰를 손가락으로 살짝 밀면 미끄러지듯이 스크롤이 되다가 서시히 멈춘다 이것을 일반뷰에서도 가능하게 해보자~ 기본적인 개념은 이렇다 손가락이 닿았을때 좌표와 시간을 저장하고 손가락이 떨어졌을때 저장된 좌표와 현재 좌표의 차를 계산해 거리와 방향을 구한다 그리고 시간의 차도 계산해 거리와 나눠 속도를 구한다 이것을 스레드로 속도를 서서히 줄이면서 계속 스크롤 해주면 된다. 소스로 보면 더 잘 이해될것이다. private View mView; private long mTime; private ScrollThread mThread; @Override public boolean onTouchEvent(MotionEvent event) { float touchx = event.getX(); float .. 2016. 2. 29.