티스토리 뷰

반응형
// res밑에 anim폴더를 만들고 거기에 alpha.xml파일을 생성 한다.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
  
   <alpha  // rotate, scale, translate
   android:fromAlpha="0.0"  // 투명에서
   android:toAlpha="1.0"      // 불투명으로
   android:duration="2000" // 시간
   android:repeatCount="0"
   />
  
</set>
 
 

// Manifest 액티비티 추가시

 <!-- 로고가 먼저 떠야 하므로  <action android:name="android.intent.action.MAIN" />를이쪽으로 옮겨 주엇다. -->
        <activity android:name="Logo">
            <intent-filter>
             <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent-filter>
        </activity>
 
 
// Logo.java
public class Logo extends Activity {
LinearLayout mLinear;
Animation mAni = null;
 
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.logo);
    
    mLinear = (LinearLayout)findViewById(R.id.linearLogo);
    mAni = AnimationUtils.loadAnimation(Logo.this, R.anim.alpha);
    mLinear.startAnimation(mAni); // 레이아웃으로 애니메이션 표현
    
    // 애니메이션 이벤트
    mAni.setAnimationListener(new AnimationListener() {
     // 애니메이션이 끝난 다음
     public void onAnimationEnd(Animation animation) {
     // 끝남과 동시에 메인 액티비티 호출
                       Intent intent = new Intent(Logo.this, Main.class);
         startActivity(intent);
     }
    
     // 시작 할 때
public void onAnimationStart(Animation animation) {
    
}  
 
// 반복할 때
public void onAnimationRepeat(Animation animation) {
 
}
    });   
}
 
// 종료 관련 1
protected void onNewIntent(Intent intent)
{
     super.onNewIntent(intent);
     boolean isKill = intent.getBooleanExtra("KILL_ACT", false);
     
     if(isKill) close();
}
 
// 종료 관련 2
private void close()
{
     finish();
     int nSDKVersion = Integer.parseInt(Build.VERSION.SDK);
     if(nSDKVersion < 8)    //2.1이하
     {
           ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
           actMng.restartPackage(getPackageName());
     }
     else
     {
            new Thread(new Runnable() {
                 public void run() {
                      ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
                      String strProcessName = getApplicationInfo().processName;
                      while(true)
                      {
                           List<RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
                           for(RunningAppProcessInfo rap : list)
                           {
                                if(rap.processName.equals(strProcessName))
                              {
                                   if(rap.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
                                        actMng.restartPackage(getPackageName());
                                   Thread.yield();
                                   break;
                              }
                         }
                    }
               }
          }, "Process Killer").start();
     }
}
}
 
반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday