기본 콘텐츠로 건너뛰기

글

라벨이 안드로이드인 게시물 표시

2022 08 26 회사 워크샵

overridePendingTransition 파라미터 예시..

안드로이드 2.0 ( api level 5 ) 부터 액티비티가 보여지고, 없어질때 뷰처럼 애니메이션을 설정할 수 있다. 사용법도 간단하다. startActivity(); 를 하고, overridePendingTransition( R.anim.new_activity, R.anim.old_activity ); 애니메이션이 설정되지 않은 경우는 새 액티비티는 오른쪽에서 슬라이드-인 되고, 기존 액티비티는 왼쪽으로 슬라이드-아웃 된다. 애니메이션은 기존 방식과 동일하게 res/anim 폴더에 xml 로 작성하던가, Animation 객체를 생성해 사용해도 된다. [ fade - animation ] <alpha xmlns:android="http://schemas.android.com/apk/res/android"        android:interpolator="@android:anim/accelerate_interpolator"        android:fromAlpha="0.0" android:toAlpha="1.0"        android:duration="@android:integer/config_longAnimTime" /> [ hold - animation ] <translate xmlns:android="http://schemas.android.com/apk/res/android"        android:interpolator="@android:anim/accelerate_interpolator"        android:fromXDelta="0" android:toXDelta="0"        android:duration="@android:integer/config_...

어플실행시키기(Package name으로 액티비티 실행)

요즘은 책도 많고 블로그에 자료도 많아서 자세히 소개가 잘 되어 있어서 startActivity 를 실행 시키는것은 큰 어려움이 없다. startActivity 를 할때 두가지 생각을 해야 하는데.. 명시적으로 할 것인가 암시적으로 할 것인가~!! 명시적인 호출 방법은 Activity의 이름을 직접 호출 하는경우이고.. 암시적인 호출 방법으로는 IntentFilter 통해  Action  과 Category 조건이 맞는 것을 필터링해서 상황에 맞는 Activity 를 실행시켜준다. 어플을 실행 시킬려고 했다.. 뭐 Activity 를 실행시켜주면 되겠군~?ㅋㅋ 쉽게 생각했지만 문제가 발생햇다.. Package에 어떤 Activity가 첫번째 실행 액티비티인지 어떻게 아느냐~~ㅜㅜ 구글링과 풀소스를 뒤져본 결과..의외로 간단하게 해결 되었음.. package lowmans.test.MyTest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MyTest extends Activity { private Intent intent; private final String packageName = "com.android.music";     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout....

안드로이드 Intent 그리고 PendingIntent 와 Intent Sender

안드로이드 인텐트 관련해서, 두 가지 신기한 클래스가 제공됩니다. 이름만 들어서는 그 쓸모가 무엇인지 애매한,  PendingIntent  와 IntentSender 가 바로 그 주인공입니다. 개발자 사이트에 서술된 내용을 살펴보아도 두 가지가 하는일이 정확히 무엇인지, 그리고 특히, 둘 사이의 차이점이 무엇인지 좀 헷갈립니다. 두 가지 클래스는 어떤 역할을 수행하고, 어떤 차이점이 있으며, 안드로이드 어플리케이션을 개발할 때, 어떻게 유용하게 사용될 수 있는지 간단하게 정리해 보았습니다.  1. PendingIntent   PendingIntent  은 비교적 이해하기 쉽습니다. 커뮤니케이션에는 세 가지 기본 요소가 있습니다. 메세지, 송신자, 수신자. 인텐트는 메세지 입니다. 수신자는 해당 인텐트를 수신하기 위한 인텐트 필터를 갖고 있는 컴포넌트 입니다. 송신자는 인텐트를 보내기 위한 API (startActivity/startService 등)를 호출한 컴포넌트입니다.  <부디 나쁜데 쓰지 말고 내가 시킨것만 잘 하시오...>   PendingIntent  는 인텐트를 전송하고자 하는 '송신자'가 인텐트를 하나 생성한 후, 별 도의 컴포넌트에게 '이 인텐트를 나중에 나 대신 보내 주렴.' 하고 전달하고자 할 때 사용되는 클래스입니다. 즉, 내가 친구에게 은행 통장에서 돈을 대신 뽑아달라고 부탁하며, 뽑을 돈의 액수를 알려주고 (인텐트), 내 카드를 빌려주는 것과 비슷한 개념이라고 생각 할 수 있습니다. 당연히,  PendingIntent  를 사용할 때는 내가 맡긴 카드가 악용되지 않도록, '권한' 문제에 관해서 신경을 기울일 필요가 있으며, 이와 동시에 안드로이드 플랫폼 상에서도  PendingIntent  의 권한 문제를 제어할 수 있는 API는 물론이고, 다양한 FLAG를 제공해 주고 있습니...

안드로이드 타이머 구현 하기

개발환경  : JDK 1.6, Android 2.1, window XP 이번에는 안드로이드에서 타이머 구현 방법에 대해 언급할려고 한다 . 쓰임세는 다양하다 .  게임에서 시계표시를 할수 있고 타이머 관련 구현도 가능하며 시간 간격에 맞게 어떤 작업을 수행하고자 할때도 쓰일것이다 .  그래서 한번은 정리할 필요가 있었다 . (1) java  에서 주로 쓰는 방법 안드로이드는  java 를 기반으로 하기 때문에  java  에서 사용하는 타이머 구현 방법을 떠올릴 것이다 . Java  에서 구현하는 방법은 여러가지가 있는데 그 첫번째는 스레드를 이용하는 것이다 . 추상클래스인  Runnable  를 상속받던지 아니면  Thread  클래스를 생성해서  run  함수를 구현하는데 그 속에 일정한 간격으로 루프를 돌수 있도록 구현 하면 된다 . private final class SwapViews implements Runnable {     private final int mPosition;     public SwapViews(int position) {         mPosition = position;     }     public void run() {         //  기능구현                ...

안드로이드 pdf/hwp 호출

Intent intent = new Intent();   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   intent.setAction(android.content.Intent.ACTION_VIEW);   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   if (file.getName().endsWith(".pdf")){  intent.setDataAndType(Uri.fromFile(file), "application/pdf");   }else if (file.getName().endsWith(".hwp")){ intent.setDataAndType(Uri.fromFile(file), "application/hwp");   }   try{    startActivity(intent);   }catch(ActivityNotFoundException e){    util.showLongToast("해당파일을 실항할 수 있는 어플리케이션이 없습니다.\n파일을 열 수 없습니다.");    e.printStackTrace();   } 출처 -  http://ldelight.tistory.com/tag/android%20pdf%20%EC%8B%A4%ED%96%89

안드로이드 어플 내 언어 설정 변경

출처 - http://www.androidside.com/B49/52368 [추천하는 방법은 아니랍니다.. 꼼수...] 아래와 같이 하면 변경이 됩니다만.. 전체적으로 변경되지 않네요. 아울러.. 매니페스트에 아래와 같이 입력해야됩니다. <!-- 런타임에 로켈을 바꾸면 화면이 점점 더 작아지는 현상 방지 --> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true" /> import java.util.Locale; import android.content.res.Configuration; import android.net.ConnectivityManager;         // 언어 설정 메소드     public void setLocale(String charicter) {     Locale locale = new Locale(charicter);     Locale.setDefault(locale);     Configuration config = new Configuration();     config.locale = locale;     getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());     }     // 사용시     public void onCreate(Bundle savedInstanceState) { setLocale("ko");/...

안드로이드 다국어 지원 방법

안드로이드를 개발을 하다보면, 각각의 나라마다 해당 국가의 언어를 표시해 줘야 할 경우가 생깁니다. 그럴경우.. 음.. 굉장한 난관에 부딪히게 되는데요. 그러한 이유때문에 안드로이드에서는 단말에 설정되 있는 시스템언어에 따라 자동으로 언어를 설정해 주는 기능을 제공합니다. 그 기능은 바로 안드로이드 Project -> res폴더 안에 -> values 라는 string.xml 포함하고 있는 폴더를 이용한 방법인데요. 보통 프로젝트를 개발할 시에는 하나의 values에 하나의 string.xml을 사용하게 됩니다. 하지만, 아래와 같이 언어별 폴더를 따로 만들게 되면, 단말에 설정된 시스템언어를 기준으로 자동으로 지정된 values 폴더를 참조 하게 됩니다. 자 그럼!! 사용 방법을 알아볼까요? 위에서 보시는 것과 같이, "values-en" , "values-ko" 라는 폴더를 만들었습니다. 그리고 각각의 폴더마다 "strings.xml"이 존재하는 것 을 볼 수 있습니다. 각각 단말에 설정에 언어에 의해서 해당폴더의 "strings.xml"을 참조하게 되는 것이지요. 음 근데 왜 values 폴더 옆에 en 과 ko 라는 네임이 붙은 것 일까요? 네 맞습니다. 그것이 시스템 언어에서 구분자로 사용하고 있는 값이기 때문입니다. 한국어는 "ko" , 미국어는 "en", 일본어는 "ja" 이런식으로 값을 사용하고 있습니다. (다른언어를 더 사용하고 싶다면, 이클립스에서 Locale. 까지 입력하시면 제공하는 언어들을 더 보실 수 있습니다.) 만약 일본어를 추가해 주고 싶다면, "values-ja" 라는 폴더를 만들어서 사용하면 되겠죠? 자 다음은 strings.xml 내부 모습을 살펴 보겠습니다. values-en 폴더의 strings.xml 파...

Lint API Check

Lint  API  Check posted  Feb 15, 2012 2:54 PM  by Tor Norbye  ADT 가 17 버전으로 업데이트 되면서 Lint 툴에도 많은 향상이 이루어졌습니다. 체크하는 항목 수가 두배 가까이 증가하였으며, 기본 구조도 많이 개선되었습니다. 이제 Lint 툴은 자바 소스 뿐만아니라, 컴파일된 바이트 코드도 분석합니다. 덕분에, 새로운 종류의 문제들을 사전에 감지 할 수 있게 되었습니다.  한 가지 예를 들어 볼까요? 만일 여러분이  API  4 (안드로이드 1.6) 버전을 지원하는 어플리케이션을 작성하기로 마음먹었다고 상상해보세요. 아마 메니페스트에는 다음과 같이 값이 설정될 것 입니다.    <uses-sdk android:minSdkVersion="4" />  그리고 Lint 툴을 돌려 보면 아마 다음과 같은 에러가 발생할 수도 있습니다. src/com/example/android/ api s/app/Animation.java:70: Error:  Call   requires   API level ...

안드로이드- RadioGroup,RadioButton

잘안쓰지만 언젠가는 사용할일이 있겠지 싶은 물건. 주의할점이라고 하면 RadioGroup , RadioButton은 직계 부모 자식 간이어야 합니다. <RadioGroup android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:id= "@+id/sex" android:orientation= "horizontal" > <RadioButton android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:id= "@+id/male" android:text= "@string/male" ></RadioButton> <RadioButton android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:id= "@+id/female" android:text= "@string/female" ></RadioButton> </RadioGroup> 먼저 그룹값을 가져온뒤 RadioGroup sexGroup = ( RadioGroup ) findViewById ( R . id . sex ); 그중에 선택퇸 라디오버튼을 다시한번 가져와서 RadioButton sex = ( RadioButton ) findViewById ( sexGroup . getCheckedRadioButtonId ()); 그것의 라벨내용을 사용합니다. s...

안드로이드 - 설치된 어플 패키지 이름 및 클래스 네임 확인

 List<PackageInfo> packageinfo = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);               for(int i =0;i< packageinfo .size();i++){         PackageInfo pi =  packageinfo .get(i);         String appname = pi.packageName;        // 패키지명                 if(pi.activities != null){                   String appclassname =pi.activities[0].name;        // 클래스명                 Log.d(packgename,appclassname);                }         } - 다른 어플 실행시키기 Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(new ComponentName("패키지명", "클래스명")); startActivity(int...