달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
반응형
2013. 2. 12. 21:35

안드로이드 - d-day소스 안드로이드 이야기2013. 2. 12. 21:35

728x90
반응형

안드로이드 - d-day소스 
 


var fy=2012; // D-Day가 될 년도 설정
var fm=11; // D-Day가 될 월 설정
var fd=8+1; // D-Day가 될 일 설정
var fdt:Date=new Date(fy, fm-1, fd, 0, 0, 0, 0); // D-Day가 될 날짜 설정
 // Date(년, 월, 일, 시, 분, 초, ms)
 // 월에서 1을 뺀 이유는 실제 Date로 출력되는 월은 0~11이기 때문에
var dday; // 계산된 시간이 입력될 배열 생성


 var ndt:Date=new Date(); // 현재 날짜
 var fntime:Number=(fdt.getTime()-ndt.getTime());  // D-Day - 현재 날짜를 ms로 환산
 // getTime() : 시간을 1970년 1월 1일 자정 0분 0초 0ms으로 부터 누적된 ms로 환산함.


// 스위치가 0이면
  dday=Math.floor(fntime/(24*60*60*1000)); // days : ms 값을 일로 환산
    // 이후 시, 분, 초, ms 계산시 반복적으로 값을 빼도록 해야 함.
 
  txt.text="2013수능까지..\n";
  txt.text=txt.text + dday+ "일";


stop();

 


출처는 플생사모[출처] 이번 ui에 쓰인 d-day소스|작성자 가지라123

 

728x90
반응형
:
Posted by mapagilove
728x90
반응형
안드로이드 - assets 폴더에서 DB 복사하기.
실제 단말기에서 App을 돌리면, 에뮬에서 작업한 db가 생성되지 않는다.
이클립스로는 갤럭시s에서는 /sdcard 제외한 내부 파일시스템에는 접근할 수도 없다.



그럼 애써 작업한 db 파일을 못쓴다는것인가?

찾아본 방법중 하나는,
이클립스에서 빌드하기전에, assets 이란 폴더에 해당 db 파일을 카피해서 넣고,
빌드후 어플리케이션내에서 해당 패키지 폴더 명으로 db 파일을 카피를 하는 방법이 있었다.

첫번째 방법은 뻑나기 좋으므로,
두번째 방법은 웹에서 db를 다운로드 받아서 해당 패키지에 db를 카피하는것이 가장 좋을듯하다.
상용되는 대부분의 App들이 웹으로부터 db 파일을 받아서 업데이트가 이루어 질것이다.

수많은 데이터를 parsing 받아 db에 저장하는 식은 아무리 초고속 인터넷이라도
엄청난 시간이 소요될것이니까...

물론 위 두 방법다 자바 입출력 메소드를 통해 이루어진다.


늘 써오던 자바 입출력 메소들를 써서, 파일을 불러들이고, 다시 쓰면 된다.
단, assets 에 있는 파일명과 일치 해야된다.
private void copydb(Activity act) {
 
		AssetManager am = act.getAssets();
		File f = new File("/data/data/com.ludvan/databases/parking.db");
 
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
 
		try {
 
			InputStream is = am.open("parking.db");
			BufferedInputStream bis = new BufferedInputStream(is);
 
			// 만약에 파일이 있다면 지우고 다시 생성
			if (f.exists()) {
				f.delete();
				f.createNewFile();
			}
			fos = new FileOutputStream(f);
			bos = new BufferedOutputStream(fos);
 
			int read = -1;
			byte[] buffer = new byte[1024];
			while ((read = bis.read(buffer, 0, 1024)) != -1) {
				bos.write(buffer, 0, read);
			}
			bos.flush();
 
			fos.close();
			bos.close();
			is.close();
			bis.close();
 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
이것때문에 반나절 삽질한것 같다...

만약에 db 파일이 1MB 이상이면, 조건에 걸려서 카피가 되지 않는다.
이럴땐, 파일을 조각내서 카피하면 되는데 방법은 아래의 URL 참고.

http://www.androidpub.com/191797

http://hyeongkyu.net/110090943249

http://nashorn.tistory.com/category/?page=8
728x90
반응형
:
Posted by mapagilove
728x90
반응형

안드로이드 - EditText 엔터키 막기

원본출처:http://shstarkr.tistory.com/153

회원가입시 아이디, 비밀번호, 닉네임 등을 입력할때 엔터키를 누르면 다음줄로 내려간다.
이를 방지하기 위해 아래 소스를 참조.

1
2
3
4
5
6
7
8
9
10
11
12
13
EditText strNick = (EditText)findViewById(R.id.etNick);
 
strNick.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode == event.KEYCODE_ENTER)
        {
            return true;
        }
        return false;
    }
});
728x90
반응형
:
Posted by mapagilove
728x90
반응형

안드로이드 - 자바 진법 변환

진법을 변환하는 것에 필요한 것은

toString(진법수) 와 parseInt(수,진법수)

이 두 함수 이다.

이것은 자바스크립트에서 지원하는 함수로

toString의 경우 10 진수를 특정 진법으로 변환 하며

parseInt 의 경우 타 진법을 10진수 로 변환하는 기능을 제공한다.

 

예제

 

var n = 10;

n.toString(2) // 10진법  -> 2진법

n.toString(8) // 10진법 -> 8진법

n.toString(16) // 10진법 -> 16진법

 

parseInt(n.toString(2),2) // 2진법 -> 10진법

parseInt(n.toString(8),8) // 8진법 -> 10진법

parseInt(n.toString(16),16) // 16진법 -> 10진법

 

과 같이 쓰인다.

728x90
반응형
:
Posted by mapagilove
728x90
반응형

안드로이드 - ImageView Round처리

원본출처:

http://blowmj.tistory.com/entry/Android-ImageView-Round%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0

getRoundedCornerBitmap 클래스로 해주면 됩니다.




public class ImageRound extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ImageView img = (ImageView)findViewById(R.id.image);

Bitmap bm = BitmapFactory.decodeResource(getResources(),

R.drawable.icon);

img.setImageBitmap(getRoundedCornerBitmap(bm, 10));

}

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap

.getHeight(), Config.ARGB_8888);

Canvas canvas = new Canvas(output);


final int color = 0xff424242;

final Paint paint = new Paint();

final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

final RectF rectF = new RectF(rect);

final float roundPx = pixels;


paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0);

paint.setColor(color);

canvas.drawRoundRect(rectF, roundPx, roundPx, paint);


paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

canvas.drawBitmap(bitmap, rect, rect, paint);


return output;

}

}

728x90
반응형
:
Posted by mapagilove
728x90
반응형

안드로이드 - 리스트뷰 안에있는 여러 버튼 이벤트 처리 

리스트뷰에 버튼이 여러개 있을때 어떻게 해야 할까?
버튼 각각에게 다른 리스너를 넣어주고 싶다면?
버튼에 onClick 리스너에게 그 버튼의 포지션을 알려 주려면?

다음 코드를 보면 해답이 있다.

final OnClickListener myBtn1Listener = new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
// do something!
}
};
final OnClickListener myBtn2Listener = new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
// do something here as well!!
}
};

static class ViewHolder {
Button btn1;
Button btn2;
}

getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if(v == null) {
holder = new ViewHolder();
v = mInflater.inflate(R.layout.list_item, parent, false);
holder. btn1= (Button) v.findViewById(R.id.button1);
holder. btn2 = (Button) v.findViewById(R.id.button2);

holder.btn1.setOnClickListener(myBtn1Listener); 
holder.btn2.setOnClickListener(myBtn2Listener); 

v.setTag(holder);
}
else {
holder = v.getTag();
}
holder.btn1.setTag(Integer.valueOf(position));
holder.btn2.setTag(Integer.valueOf(position));
}

리스너를 파이널로 만들어서 등록해 주었다. 
new OnClickListener 로 getView에서 해줄 수 있지만 new 를 써서 객체를 생성하게 되면 
시간이 오래 걸린다. 
getView에서는 그런 것을 되도록이면 피하는게 좋다.

리스너 등록은 convertView가 null일때만 해주는 이유가 재활용 할때도 그 버튼에 계속 리스너가 등록되어 있기 때문에 다시해줄 필요가 없기 때문이다.

오로지 그 위치만 정확하게 알려 주면 된다 (setTag를 이용해서)
728x90
반응형
:
Posted by mapagilove
반응형