본문 바로가기

플밍 is 뭔들/안드로이드

[안드로이드] 캔버스를 이용한 원형차트 만들기 위와같이 성공한 만큼 빨간색으로 표시해 주는 원형 그래프를 캔버스를 이용해 만들려고 한다. public class CircleChart extends View { ArrayList writing; int x; int y; public CircleChart(Context context, ArrayList writing, int x, int y ) { super(context); this.writing = writing; this.x=x; this.y=y; } @Override public void onDraw(Canvas canvas) { //drawArc를 이용하면 오른쪽이 0도가 된다. 난 가장 윗부분을 0도로 보았기 때문에 -90도를 해주었다. final float START_POINT = -90f;.. 더보기
[안드로이드] 알람 및 알람 리시버 구현/ 특정 시간, 특정 요일에 울리게 하는 알람 ※ 재미로 만든 첫 어플의 기능 중 알람 시계 어플 처럼 지정한 요일에 지정한 시간에 알람을 울리게 하는 기능이 필요했다. 소스는 다음과 같다. 1.소스 코드 내에 알람을 설정하는 코드를 생성 setAlarm() 함수와 cancelAlarm()함수 구현 public void setAlarm(){ Intent intent = new Intent(context, AlarmReceiver.class); intent.putExtra("no", alarmIdx); AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); PendingIntent pendingIntent = PendingIntent.getBroadcast(c.. 더보기
[안드로이드] 특정 Activity에서 다른 Activity의 ListView새로고침하기 1.새로고침하고자 하는 Activity의 Context를 전역변수로 만들어 준다. public static Context CONTEXT; 2.onCreate 부분에서 Context의 값을 지정해준다. CONTEXT = this; 3.다른 Activity에서 위의 Context의 onResume() 메서드를 호출한다 ((ListActivity)ListActivity.CONTEXT).onResume(); ※ 해당 내용은 onResume() 메서드를 통해 새로고침한다는 가정하에 작성한 내용. onResume() 메서드에 새로고침에 관한 내용이 있어야 한다. @Override public void onResume() { super.onResume(); ListView.notifyDataSetChanged(); } 더보기
[안드로이드] 스크롤뷰 스크롤 끝까지 내리기 이런식으로 써줘야 동적으로 뷰를 추가한 레이아웃에도 스크롤이 끝까지 내려간다. scrollViewName.fullScroll(ScrollView.FOCUS_DOWN); 이부분 한줄만 사용한다면 뷰가 추가되기 전의 영역까지만 스크롤이 내려간다. 그렇기 때문에 동적으로 스크롤의 끝이 변할때는 아래와 같이 사용해줘야 한다. public void scrollDown(){ scrollViewName.post(new Runnable() { @Override public void run() { scrollViewName.fullScroll(ScrollView.FOCUS_DOWN); } }); } 더보기
[안드로이드] EditText 자동 포커스, 키보드 자동실행 막는법, 키보드 실행시 화면 사이즈 재설정 레이아웃에 EditText가 있으면 자동 포커스, 키보드 자동실행이 된다. 또한 아래에서 키보드가 올라오면 레이아웃의 화면을 가리기때문에 키보드가 올라온 만큼 화면의 사이즈를 다시 설정해줄 필요가 있다. 1. EditText 자동 포커스 막기 view, Layout.xml쪽에 다음 속성을 추가한다. android:focusable="true" android:focusableInTouchMode="true" 2.EditText의 키보드 자동실행 막기 AndroidManifest.xml의 해당 레이아웃에 다음 속성을 추가한다. android:windowSoftInputMode="stateAlwaysHidden" 3.EditText의 키보드 실행시 화면 레이아웃 사이즈 재설정 AndroidManifest.xm.. 더보기
[안드로이드] Back(뒤로가기) 버튼 2번 터치시 앱 종료하기 Back 버튼은 컨트롤 하는 메소드는 바로 onBackPressed()이다. 전역변수로 시간에 관한 변수들을 설정해 놓는다. private final long FINISH_INTERVAL_TIME = 2000; private long backPressedTime = 0; 그런 후 onBackPressed 메소드를 다음과 같이 하면 된다. - super.onBackPressed() 메소드의 끝은 finish()가 있다 -> 레이아웃 종료메소드 @Override public void onBackPressed() { long tempTime = System.currentTimeMillis(); long intervalTime = tempTime - backPressedTime; if (0 = intervalT.. 더보기
[안드로이드] DrawLayout을 이용하여 멀티윈도우 생성 예제 위의 그림과 같이 네비 버튼을 눌렀을 때 왼쪽에서 오른쪽으로 튀어나오는 레이아웃을 생성하는 예제이다. ※ 소스코드 부분 DrawerLayout drawerLayout; View drawerView; ImageButton btn_actionBar @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); drawerView = (View)findViewById(R.id.drawer); btn_actionBar.. 더보기
[안드로이드] dp -> px / px -> dp로 변환하기 ※ 소스코드 내에서 dp 에서 px로 바꾸거나 px 에서 dp 로 바꿀때 //px -> dp public int fn_pxToDp(Context context, int px){ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return dp; } //dp->px public int fn_dpToPx(Context context, int dp) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetric.. 더보기
[안드로이드] dp, dip, sp, px의 차이 ※ 웹만 해보다가 안드로이드 퍼블을 맨처음 했을 때 위젯들의 크기를 px로 지정했다. 하지만 이런식으로 지정을하면 해상도가 다양한 핸드폰 화면에서는 내가 원하는 크기와 위치로 지정되지가 않는다. 그렇기 때문에 안드로이드 퍼블을 처음 하는 사람이라면 아래의 단위에 대해 알아야 한다. dp와 dip (Density Independent Pixel) 안드로이드 폰의 다양한 해상도를 지원하기 위해 만든 단위이다. 큰화면이든 작은 화면이든 같은 크기로 나타나게 되어있다. sp (Scale Independent Pixel) dp와 비슷하지만 추가적으로 사용자가 선택한 글꼴 크기에 의해 크기가 자동으로 조절된다. ※ 요약 레이아웃 등의 UI적 요소 : dp(dip) 사용 글자 크기 : sp 사용 되도록이면 px는 사.. 더보기
[안드로이드] 레이아웃 중첩, 겹치기 삭제 ※ 아래 글에서 레이아웃을 중첩시켰으면 언젠간 중첩시킨것도 없애야 한다. 중첩된 레이아웃을 지우는 방법은 아래와 같다. (전) (후) LinearLayout ll = (LinearLayout)findViewById(R.id.삭제할_레이아웃_아이디); ((ViewManager) ll.getParent()).removeView(ll); 더보기
[안드로이드] 레이아웃 중첩, 겹치기 ※ 안드로이드 개발을 하다보면 alert dialog는 아닌데 지금 있는 레이아웃 위에 alert dialog처럼 보여줘야 할때가 있다. (dialog는 커스터마이징 해도 테두리를 없앨수가 없다. 그렇기 때문에 레이아웃을 겹쳐 만들었다.) 아래에 빨간 원안의+ 버튼을 누르면 버튼 3개가 보이면서 투명도를 준 레이아웃이 겹치게 해주었다. (전) (후) activity_write_type.xml (위에 겹칠 레이아웃) ListActivity.java protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //밑에 깔 레이아웃을 설정해주고 setContentView(R.layout.activity_list).. 더보기
[안드로이드] dp, dip, sp, px의 차이 ※ 웹만 해보다가 안드로이드 퍼블을 맨처음 했을 때 위젯들의 크기를 px로 지정했다. 하지만 이런식으로 지정을하면 해상도가 다양한 핸드폰 화면에서는 내가 원하는 크기와 위치로 지정되지가 않는다. 그렇기 때문에 안드로이드 퍼블을 처음 하는 사람이라면 아래의 단위에 대해 알아야 한다. dp와 dip (Density Independent Pixel) 안드로이드 폰의 다양한 해상도를 지원하기 위해 만든 단위이다. 큰화면이든 작은 화면이든 같은 크기로 나타나게 되어있다. sp (Scale Independent Pixel) dp와 비슷하지만 추가적으로 사용자가 선택한 글꼴 크기에 의해 크기가 자동으로 조절된다. ※ 요약 레이아웃 등의 UI적 요소 : dp(dip) 사용 글자 크기 : sp 사용 되도록이면 px는 사.. 더보기