<activity 
      android:name=".CustomProgressDialog" android:theme="@android:style/Theme.Translucent"
 </activity>

'~ 2014 > JAVA & ANDROID' 카테고리의 다른 글

JAVA :: 예약종료  (0) 2013.09.03
ANDROID :: 액티비티 투명처리  (0) 2013.07.19
JAVA :: 모니터 해상도에 따른 중앙값 얻기  (0) 2013.07.13
JAVA:: 파일목록 가져오기  (0) 2013.07.12
JAVA:: JsonObject, JsonArray  (0) 2013.07.12

 Dimension screen =Toolkit.getDefaultToolkit().getScreenSize(); // 모니터화면의 해상도 얻기
 Dimension f1_size = super.getSize(); // 프레임크기
  
  // 프레임이 화면 중앙에 위치하도록 left, top 계산
  int left = (screen.width / 2) - (f1_size.width / 2);
  int top = (screen.height / 2) - (f1_size.height /2 );


cf) 해당 클래스는 Frame을 상속받습니다 !!!


출처 http://sugame.tistory.com/617

import java.io.File;


public class GetFileList {

  public static void main(String[] args) {

    

    File myDir = new File("C:/Users/lssang/Desktop/이미지"); // 디렉토리의 객체생성

    System.out.println(myDir.getAbsolutePath());     // 디렉토리의 절대경로

    System.out.println(myDir.getParent()); // 부모디렉토리

    String fileName = myDir.getName();                                    // 파일 이름

    String fileExtention = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());

    // 파일 확장자

    

    

    File[] contents = myDir.listFiles(); // 디렉토리의 내용을 가져온다

    

    // 디렉토리의 내용 목록출력

    if (contents != null) {    // contents가 null값이 아닐경우(디렉토리에 내용이 있을경우)디렉토리의 내용출력 

      for (int i = 0; i < contents.length; i++) {

     System.out.println(contents[i].getName());

      }

    } else {                     // contents가 null일 경우(디렉토리에 내용이 없을경우)

      System.out.println(myDir.getName() + " is not a directory");

    }

    System.exit(0);

  }

}

Boolean / Charactor / Number / String 형의 배열을 String 타입으로 지원해주는 라이브러리가 있더라 !!

소케송신이나 엑티비티통신간 이런 String 묶음들을 한번에 전송할때 유용하게 쓸 수 있을 것이다.


gson-2.2.4.jar

이 아이는 google에서 만든 json인데 지금 작성할 내용은 gson이나 json이나 별반 다를게 없다.


<JsonObject> 

<JsonObject 생성>

JsonObject jsonObject = new JsonObject();

<엔트리 추가>

jsonObject.addProperty("type", "test");

jsonObject.addProperty("data", "안녕하세요");

<JsonObject 출력>

String str = jsonObject.toString();

System.out.println(str);

<결과>

{"type":"test","data":"안녕하세요"} 

<사용하기 >

//String 형을 Json오브젝트로 변환

String str = "{"type":"test","data":"안녕하세요"}";

JsonParser parser = new JsonParser();

JsonElement element = parser.parse(str);

JsonObject json = element.getAsJsonObject();

//JsonObject에서 문자열을 추출

String type = json.get("type"); //type 에는 "test"라는 문자열이 저장된다

String hello = json.get("data") // hello 에는 "안녕하세요"라는 문자열이 저장된다.


<JsonArray>

//두 JsonObejct 객체가 아래와 같다면...

jsonObject1 = {"type":"test","data":"안녕하세요"

jsonObject2 = {"type":"test","data":"반갑습니다"}  


<JsonArray 생성>

 JsonArray jArray = new JsonArray();

<엔트리 추가>

 jArray.add(jsonObject1);

 jArray.add(jsonObject2);

<JsonArray 출력>

String str = jArray.toString();

System.out.println(str);

<결과>

[{"type":"test","data":"안녕하세요"},{"type":"test","data":"반갑습니다"}]

<사용하기>

//String 형을 JsonArray로 변환

String str = "[{"type":"test","data":"안녕하세요"},{"type":"test","data":"반갑습니다"}]"

JsonParser parser = new JsonParser();

JsonElement element = parser.parse(str);

JsonArray jArray = element.getAsJsonArray();

//JsonArray에서 문자열 추출

String hello = jArray.get(0).get("data");

String hello2 = jArray.get(2).get("data");


하... 포스팅 능력이 딸리다보니 이렇게밖에 표현을 못하겠네요...

web에선 자주 등장하는 json이라는 객체가 그것인데 자바코드에서 직접 사용하니 신세계이지 아니한가



InetAddress local = InetAddress.getLocalHost();

String ip = local.getHostAddress();


이렇게 쉬울수가 !!!

안써보면 어렵다고.... onCreate 밑에 이거하나 추가해놓고 겁나 가져다 쓰자.


private void popToast(String str){

Toast toast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT); 

toast.show();

}

 쓸만한 애플리케이션을 만들다 보면 스레드 사용이 빈번하다. 또한 나를 포함한 대부분의 어플 사용자들은 실행중인 어플을 종료시키기위해 취소버튼을 연타하는 품격없는 행위를 지금 이시간에도 누군가는 분명 하고있을것이다. 

 이때 스레드를 정상적으로 종료시켜주기 위해 Thread.close(); 와 같은 코드를 넣어주는데 역시 나를포함한 초보개발자들이 자주 실수하는 부분이다. 스레드가 진행되다 다양한(?) 이유로 스레드가 종료되는데 또는 스레드를 초기화 하지 않은 상태 ( Thread mThread = null; 이렇게 선언만 해놓은 상태) 에서 이 코드를 만나면 LogCat에서 쳐다보기도 싫은 빨간글씨들이 담배를 생각나게한다.

 보통 안드로이드에서 쓰레드는 엑티비티 생명주기 마지막 finish()에서 선언해주는데 다음과 같이 쓰면 되겠다.

public void finish() {

if(mThread!=null){

    mThread.close();

 }

super.finish();

 }

쓰레드 뿐 아니라 .close()를 사용하는 다양한 객체들 종료시 간단한 if문을 통해 스레드가 null이 아닌지 확인하고 종료하는 습관을 들이자.


Desktop.getDesktop().open(new File("C:/Users/lssang/Downloads/runningman130707.avi"));


짠 ~

간단해보이지만 모르면 몇시간이고 고생하는 ...


Java 어플리케이션으로 Desktop 클래스를 사용하면, 네이티브 데스크탑으로 등록을 마친 관련지을 수 있었던 어플리케이션을 기동해,URI 나 파일을 처리할 수 있습니다.

지원되는 조작에는 다음의 것이 있습니다.

  • 사용자 디폴트의 브라우저를 기동해, 지정된 URI 를 표시한다.
  • 옵션의 mailto URI 를 지정해, 사용자 디폴트의 메일 클라이언트를 기동한다.
  • 등록을 마친 어플리케이션을 기동해, 지정된 파일을 여는, 편집한다, 또는 인쇄한다.

라고 써있는데 쉽게말해 경로가지고 장난치기 좋은 라이브러리 같다.

도입 버전은 1.6


철느님 항상 감사합니다

시나리오: 메인엑티비티에서 버튼 클릭 시 sub엑티비티로 전환되며 이때 "안녕하세요" 라는 

             데이터를 같이 전송한다.


<메인 엑티비티>

public class MainActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

...

public void onClick(View view) {

switch (view.getId()) {

case R.id.Button1:             

          Intent intent = new Intent(MainActivity.this, SubActivity.class);

     intent.putExtra("type", "안녕하세요");  // intent에 

     startActivity(intent);

   break;

}


<서브 엑티비티>

public class SubActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sub);

Intent intent = getIntent();

String revStr = intent.getExtras().get("type").toString();

}

}


위와 같은 방법으로는 기본형의 데이터만 주고받을 수 있다. int, String, boolean 등..

엑티비티간 객체를 주고받기 위해서는 해당 객체의 클래스를 Serializable인터페이스를 확장시켜준다

public class A implements Serializable{

...

}


메인에서 intent.putExtra("objct",objectName);

서브에서 A object =  (A)intetn.getSerializableExtra("object");

와 같은 형식으로 넘겨받을 수 있다.


엑티비티간 객체전송 출처: http://www.androidpub.com/2429179



+ Recent posts