'category'에 해당되는 글 96건
- 2011.08.18 :: JAVA] drawRect 속성 알아보기 1
- 2011.08.18 :: android.content.res.Resources$NotFoundException 해결방법
- 2011.08.12 :: 안드로이드] 안드로이드 TextView 에 Font 바꾸기
- 2011.08.04 :: 안드로이드] R.java 오류 나는 원인 종류
- 2011.08.04 :: JAVA] String 원하는 만큼 잘라내기
- 2011.07.27 :: 안드로이드] Application 종료시키기
- 2011.07.26 :: 안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 9
- 2011.07.20 :: 안드로이드] trim(); 의 기능
- 2011.07.19 :: 안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 14
- 2011.07.18 :: 안드로이드] 팝업뷰 띄우기
아 생각보다 헷갈리네요 ..ㅠ
중요한건 두가지가 모여서 점하나를 찍는거고 right 와 bottom은 left와 top 값 까지 더해서
값을 주셔야 합니다. 그림과 같이 시작점은 같거든요,
마지막 Paint는 저보다 더 잘 아시겠지만 paint.setColor(Color.RED) 나 paint.setTextSize등
그릴 것의 속성입니다. paint.setColor(Color.RED) 로 윗줄에 써넣고 drawRect 을 실행했다면
빨간 사각형이 나오겠죠 !
'JAVA' 카테고리의 다른 글
JAVA] split으로 문자열 나누기 (0) | 2011.10.17 |
---|---|
JAVA] 22. 인터페이스 - 1 (0) | 2011.08.19 |
JAVA] String 원하는 만큼 잘라내기 (0) | 2011.08.04 |
JAVA] 21. 클래스의 상속 (0) | 2011.06.22 |
JAVA] 20. 클래스의 정적 구성 요소 (0) | 2011.06.17 |
리소스가 없다거나의 이유가 대부분이 더군요, 제가 하려던건 단지 텍스트뷰에 1이라는 숫자를
넣는 거였는데 ,, 따로 리소스를 사용하지도 않는데 말이죠
setText(1); 이거였습니다 ,
알아보니 스트링 형식으로 넣어야 하더군요
setText("1");
이러면 됩니다 -_-;
참고로 다른 형을 스트링으로 변환하는 방법은 setText(String.valueOf(변환할변수));
이렇게 사용하시면 됩니다.
'Android' 카테고리의 다른 글
안드로이드] 트위터 twitter4j 오류 (0) | 2011.08.23 |
---|---|
안드로이드] ListActivity 사용시 주의 할 점 (0) | 2011.08.22 |
안드로이드] 안드로이드 TextView 에 Font 바꾸기 (0) | 2011.08.12 |
안드로이드] R.java 오류 나는 원인 종류 (0) | 2011.08.04 |
안드로이드] Application 종료시키기 (0) | 2011.07.27 |
안드로이드에서는 네가지의 기본 폰트를 제공하고, 추가로 폰트를 추가하면 해당 폰트를
사용 할 수 있는데요, 먼저 기본폰트는 narmal , sans, serif, monospace 네가지로
이런 폰트 모양입니다. 폰트 적용은 간단한데요 xml의 TextView에서
android:typeface= "normal" 이런식으로 추가해 주시면 됩니다.
이제 다른 폰트를 다운받아 적용시키는 방법인데요 ,
위에 Frutiger55Roman 이라는 이름의 폰트가 있습니다 , 이걸 프로젝트의 assets 폴더에 넣어주시고
소스 상에서 추가를 해주여야 합니다. 간단한 테스트 이므로 저는 onCreate에 추가를 하였습니다.
두번째 줄이 핵심입니다, 뒤에 확장자까지 써주셔야하는거 잊지마시구요 . 저렇게 등록을 해주면
이런 추가된 폰트로 글씨가 나타나게 됩니다 !
'Android' 카테고리의 다른 글
안드로이드] ListActivity 사용시 주의 할 점 (0) | 2011.08.22 |
---|---|
android.content.res.Resources$NotFoundException 해결방법 (0) | 2011.08.18 |
안드로이드] R.java 오류 나는 원인 종류 (0) | 2011.08.04 |
안드로이드] Application 종료시키기 (0) | 2011.07.27 |
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 (9) | 2011.07.26 |
코딩을 하다 보면 갑자기 R.java에 오류가 날 때가 있습니다.
R.java 파일은 개발자가 코딩하는 부분이 아니라
src 의 자바 파일들과 res의 xml 등을 이어주는 자동으로 생성되는 연결고리 파일입니다.
그러기에 더더욱 오류가 나면 난감해지죠, 이건 코드처럼 수정할 수 도 없고 근본적인
원인을 해결해야 자동으로 반영이 되니까요,
1. drawable 폴더 내의 이미지 이름에 대문자가 들어가면 안된다.
( Background.png , backGround.png 모두 안됨)
2. drawable 폴더 내의 이미지 이름이 숫자로 시작하면 안된다.
( 10month.png 등등 안됨)
3. drawable 폴더 내의 이미지 이름이 기호로 시작되면 안된다.
( +btn.png, $money.png 등 안됨)
4. drawable 폴더 내에 xml파일 외에 이미지 확장자가 아닌 파일이 들어있을 때
( 워드나 hwp 등 다른 확장자 모두 안됨)
오류가 나고 계신다면 drawable 폴더를 한 번 확인해보시면 됩니다.
수정하셨다면 세이브해도 res 폴더는 갱신이 좀 더디더군요,
그래서 , 이클립스 메뉴 > Project > Clean 을 눌러주시면 바로 갱신을 하여 반영합니다.
하면서 알게되는 것은 계속 추가 하겠습니다. 다른거 알고 계시면 저도 가르쳐주세요 !
'Android' 카테고리의 다른 글
android.content.res.Resources$NotFoundException 해결방법 (0) | 2011.08.18 |
---|---|
안드로이드] 안드로이드 TextView 에 Font 바꾸기 (0) | 2011.08.12 |
안드로이드] Application 종료시키기 (0) | 2011.07.27 |
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 (9) | 2011.07.26 |
안드로이드] trim(); 의 기능 (0) | 2011.07.20 |
예를 들어 이미지를 파싱해 왔는데 mainImage:http://www.mainImage.com/124313.jpg
이렇게 왔다면 http부터 이미지의 패스기 때문에 앞에 mainImage : 여기는 필요 없습니다.
그럼 http 부터 끝까지 잘라내서 새로 String 변수에 담아야 하는데 그 때는 subString이란
놈을 사용합니다.
처음에 imgPath에 풀패스를 담고, 그 다음 새로 담을 newPath를 만든후에 거기 담는데
담는 부분을 잘보시면 substring( 시작 , 끝 ); 입니다. 시작을 보시면 :에 한 칸 +1 해서
http에 h 부터 잘라서 끝은 .length() 니까 끝까지죠 .
그렇게 딱 패스 부분만 담는 것 입니다.
imgPath.substring ( 0 , 10 ) ;
이런식으로 왼쪽부터 0,1,2,3 식으로 칸을 세어 담을 수 도 있구요
'JAVA' 카테고리의 다른 글
JAVA] 22. 인터페이스 - 1 (0) | 2011.08.19 |
---|---|
JAVA] drawRect 속성 알아보기 (1) | 2011.08.18 |
JAVA] 21. 클래스의 상속 (0) | 2011.06.22 |
JAVA] 20. 클래스의 정적 구성 요소 (0) | 2011.06.17 |
JAVA] 19. 메소드 (0) | 2011.06.15 |
액티비티만 꺼진다 싶을 정도로 뒤에 돌고 있던 스레드나 서비스등은 종료가 되지 않더군요
물론 finish(); 도 종료를 시킵니다. 다만 즉시 종료는 아니고 안드로이드 os가 앱을 종료시키게
하는 것이죠.
이렇게 사용하면 앱종료와 동시에 스레드도 죽습니다.
'Android' 카테고리의 다른 글
안드로이드] 안드로이드 TextView 에 Font 바꾸기 (0) | 2011.08.12 |
---|---|
안드로이드] R.java 오류 나는 원인 종류 (0) | 2011.08.04 |
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 (9) | 2011.07.26 |
안드로이드] trim(); 의 기능 (0) | 2011.07.20 |
안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 (14) | 2011.07.19 |
이번엔 버튼 눌렀을 때(press) 누른 상태를 표현 하기 위해 이미지를 바꿔보는 예제입니다.
다른것도 그렇지만 특히 버튼은 눌렸음을 표현해 주지 않으면 이게 눌린건지 안눌린건지 ..
그런 불상사를 막기위해 평상시 버튼 이미지 외에 눌렸을 때 이미지를 따로 준비하여
press 상태일 때 눌렸을 때의 이미지, 보통은 보통이미지 이런식으로 등록을 해주면 눌렀을 때
이미지가 바뀌며 사용자는 아, 이게 눌렸구나 알게되죠 사소한거지만 완성도를 높히는 길입니다.
제가 이제 설명할 방법은 솔직히 말씀드려서 정석인지 꼼수인지 잘모르겠습니다..
더 좋은 방법있으면 댓글로 알려주세요 !
전체 적인 흐름은 이렇습니다. 보통 메인 액티비티의 레이아웃이 R.layout.main 이라 한다면
main.xml에는
보통 이런식으로 버튼이 있지요, 현재 버튼은 icon 이미지로 되어있습니다.
보통 때와 눌렸을 때를 나누려면 다른 xml이 필요한데요 res/drawable-hdpi 폴더 안에 xml파일을
하나 만듭니다. main_btn.xml 이라고 만든 후 그 안에
이렇게 등록을 해줍니다. 보시다시피 눌림/안눌림을 android:state_pressed = "true/false" 로
구분하며, 거기에 해당하는 이미지를 넣어 주시면 됩니다.
그리고 마지막으로 아까
main.xml에 아이콘 background 를 icon 으로 해놓은 것을
background를 아까 drawable안에 만든 xml인 main_btn 으로 넣어줍니다. 저는 처음에 저 자리에
이미지 파일 아닌 xml이 들어가 되게 신기했었다는... 무튼 저렇게 코딩을 하고 실행을 한다면
추가로 press는 손가락으로 누르고 있을 때만 바뀌지만 누르고 이 후에도 계속 누른 상태로
유지를 하는 방법은 간단합니다.
이렇게 기본(drawable) , 눌렸을 때(pressed) , 누른 후(selected)로 구분하여 이미지를 등록해
주시면 됩니다. 다만 pressed와 다른점은 selected는 xml이 외에 코드 상에서도 손을 봐야 하는데요
위 와 같이 해당 버튼이 클릭 되었을 때 setSelected(true)로 바꾸어 주셔야 합니다.
반대로 이 버튼의 활성화 이미지를 다시 기본이미지로 바꾸고 싶을 때는 그 시점에서
setSelected(false) 로 주면 되겠죠 ,
'Android' 카테고리의 다른 글
안드로이드] R.java 오류 나는 원인 종류 (0) | 2011.08.04 |
---|---|
안드로이드] Application 종료시키기 (0) | 2011.07.27 |
안드로이드] trim(); 의 기능 (0) | 2011.07.20 |
안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 (14) | 2011.07.19 |
안드로이드] 팝업뷰 띄우기 (0) | 2011.07.18 |
공백(스페이스) 을 없애야 되는 때가 있습니다. 예를들어
파싱을 해왔는데 " 안녕하세요 " 라고 데이터가 들어있다 그럼
그걸 찍었을 때 그대로 저렇게 앞뒤로 공백이 있는 것을 그냥 사용하게 되면 양쪽으로
잉여 공간이 있어서 보기 싫겠죠 . 그 때
이렇게 하시면 앞뒤 공백이 자동으로 없어지고 "안녕하세요" 요렇게 딱 찍힙니다.
'Android' 카테고리의 다른 글
안드로이드] Application 종료시키기 (0) | 2011.07.27 |
---|---|
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 (9) | 2011.07.26 |
안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 (14) | 2011.07.19 |
안드로이드] 팝업뷰 띄우기 (0) | 2011.07.18 |
안드로이드] 현재 Activity 와 Context 얻는 방법 (6) | 2011.07.14 |
이번에 PopupWindow로 팝업창을 만들어서 사용 할 일이 있었는데 팝업뷰를 처음 써봐서
서투르기도 했겠지만, 굉장히 불안정하더군요
예를들면 팝업뷰 xml 에 WebView를 추가하여 팝업에 웹페이지를 띄울라치면 뜨긴하지만
터치 조금만 하면 badtokenexception 을 뱉어내며 죽어버립니다. 정말 딱 팝업창처럼,
뜬거 보고 확인 후 닫기. 이 기능만 할 수 있더군요 .
그러다가 알게 된 것이 액티비티를 팝업창만하게 띄워서 좀 더 쓸만한 팝업창을 만드는걸
알게 되었습니다.
우선 액티비티이니 팝업창으로 쓸 액티비티를 만듭니다 .
public class WebDialog extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
setContentView(R.layout.webpopup);
WebView webView = (WebView)findViewById(R.id.webPopup);
webView.setWebViewClient(new myWebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
webView.loadUrl("http://www.google.com");
}
class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
public void onClick(View arg0) {
}
}
이렇게 구글닷컴으로 가는 액티비티를 만들어 줍니다. 여기서 흔히 못보시던게 두가지 있는데 requestWindowFeature(Window.FEATURE_NO_TITLE);
이 놈은 나중에 설명드리겠지만 매니페스트에 이 액티비티 테마를 다이얼로그 테마로 잡습니다.
다이얼로그 테마면 상단에 다이얼로그 제목바가 생기는데 이를 없애주는 명령어 입니다.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
두번째로 이것은 그냥 취향인데 이 팝업이 뜨면 뒷 배경이 블러 효과가 납니다. 뿌옇게 이쁘게..
위 방법으로 안되면
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
layoutParams.dimAmount = 0.7f;
getWindow().setAttributes(layoutParams);
이방법도 있습니다.
무튼,해당 액티비티의 ContentView인 webPopup.xml(실질적인 팝업구성 xml입니다)을 보면
<RelativeLayout
android:layout_centerInParent="true"
android:layout_width="300dip"
android:layout_height="240dip"
android:background="#50FFFFFF">
<android.webkit.WebView android:layout_width="fill_parent"
android:id="@+id/webPopup"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true">
</android.webkit.WebView>
</RelativeLayout>보면 뭐 없습니다. 웹만 띄우기 때문에 웹뷰 하나 있습니다.
그리고 액티비티 이기 때문에 매니패스트에 등록을 해주어야 하는데요
<activity
android:name="net.oshelp.Info.WebDialog"
android:screenOrientation="landscape" android:theme="@android:style/Theme.Dialog"
android:windowSoftInputMode="stateHidden" android:configChanges="orientation|keyboardHidden">
</activity>
순서대로 액티비티명, 화면가로지정, 다이얼로그테마, 키보드 가리기, 가로세로전환시 키보드가리기
순서입니다. 중요한건 theme 정도가 있겠네요
이렇게 하고 이 팝업을 호출하는 곳에서 액티비티 부르듯
Intent intent = new Intent(detailView.this, WebDialog.class);
startActivity(intent);
이렇게 인텐트 시켜 버리면
이렇게 이쁜 팝업창이 뜹니다. 뒤에 블러효과 뭔지 아시겠죠?
이렇게 쓰면 배드토큰익셉션도 덜 날 뿐더러 액티비티 이므로 따로 백키를 오버라이딩해서
dismiss()로 꺼지게 해야할 필요없이 그냥 누르면 꺼집니다, 그리고 아까 만든
webDialog.java 에서 보면 액티비티를 상속받은 클래스이므로 여기다 터치리스너를 달던
클릭리스너를 달던 아무이상없이 잘되더군요. 앞으로 유용하게 사용 할 것 같습니다 ^^
'Android' 카테고리의 다른 글
안드로이드] 버튼 누를 시 버튼 이미지 바꾸기 (9) | 2011.07.26 |
---|---|
안드로이드] trim(); 의 기능 (0) | 2011.07.20 |
안드로이드] 팝업뷰 띄우기 (0) | 2011.07.18 |
안드로이드] 현재 Activity 와 Context 얻는 방법 (6) | 2011.07.14 |
안드로이드] 현재 액티비티, 다른 액티비티 종료하기 (15) | 2011.06.27 |
팝업뷰는 딱히 그 뷰에서 복잡한걸 하기보다는 흔히 로그인 창이나,
비교적 간단한 정보등을 띄우고 닫는 그런 뷰입니다.
먼저 필요한 세가지를 선언합니다.
private LinearLayout detail_layout; private PopupWindow pw; private View pv;
레이아웃과 팝업윈도우, 그리고 뷰가 필요합니다. 레이아웃은 꼭 리니어가 아니라도 현재
팝업이 뜰 화면의 레이아웃이면 됩니다. 예를 들어 메인액티비티의 로그인화면을 띄운다면
메인페이지를 구성하는 xml 에서 제일 밖을 싸고있는 레이아웃을 지정합니다.
값을 대입해보면
detail_layout = (LinearLayout)findViewById(R.id.detail_layout); pv = View.inflate(getApplicationContext(), R.layout.webpopup, null); pw = new PopupWindow(pv,400,400,false);
이렇게 됩니다. 레이아웃은 말씀드렸다시피 팝업창이 뜰 액티비티의 xml에 제일 밖을 싸고있는
레이아웃이고, pv에는 세가지 파라미터가 들어가는데 첫번째는 Context, 두번째는
팝업레이아웃, 세번째는 뷰그룹입니다.
두번째의 팝업레이아웃은, 팝업창의 레이아웃으로 팝업으로 뜰 화면을 xml로 만들어줘야합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/linearLayout1"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<WebView android:id="@+id/webPopup" android:layout_width="wrap_content"
android:layout_height="wrap_content"></WebView>
</LinearLayout>그리고 그렇게 만든 view를 pw에 넣는데, pw에는 네가지 파라미터가 들어갑니다.
첫번째는 팝업으로 뜰 뷰, 두번째 세번째는 그 뷰의 가로 세로 사이즈, 마지막 네번째는 현재 팝업의
focusable 로 정확한 정보는 api를 뒤져봐야겠지만 개인적으로 써보니 이걸 true로 하면 포커스가
안잡혀서 Back버튼에 dismiss() 걸어놔도 안꺼지더군요, false로 해놓으니 백키가 먹어서 꺼지네요
추가로 백버튼을 알아보면
public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK){ pw.dismiss(); } return true; }백 키를 오버라이딩하여 사용할 시에 저렇게 return true를 사용하면 팝업창만꺼지고
대신 팝업끈 후 뒤에 남은 액티비티는 백키로 꺼지지가 않습니다.
하지만 return super.onKeyDown(keyCode, event);
이렇게 바꾸면 뒤에 액티비티가 꺼지지만 팝업뜬 상태에서 백키를 누를 시
팝업꺼지고 뒤에 액티비티도 연달아 꺼져버립니다.. 그래서 불리언 값을 하나 놓고
팝업이 떠있냐 안떠있냐를 체크하여 리턴값을 다르게 주었습니다.
private boolean popup_on; public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK){ try { popup_on = pw.isShowing(); if(popup_on){ pw.dismiss(); popup_on = false; }else{ return super.onKeyDown(keyCode, event); } } catch (Exception e) {;} } return true; }이렇게 하였습니다. 팝업이 뜨는 버튼리스너안에 저 popup_on 을 트루로 바꿔주면 됩니다.
'Android' 카테고리의 다른 글
안드로이드] trim(); 의 기능 (0) | 2011.07.20 |
---|---|
안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 (14) | 2011.07.19 |
안드로이드] 현재 Activity 와 Context 얻는 방법 (6) | 2011.07.14 |
안드로이드] 현재 액티비티, 다른 액티비티 종료하기 (15) | 2011.06.27 |
안드로이드] 리스트 알아보기 (0) | 2011.06.25 |