Android 부유 대화 상자(즉,대화 상자 끄 기)구현 코드

Activity 는 Android 시스템 의 4 개의 응용 프로그램 구성 요소 중 하나 입 니 다.전통 적 인 방법 으로 보 여 주 는 액 티 비 티 는 전체 화면,즉 전체 화면 으로 가득 찬 액 티 비 티 다.사실 액 티 비 티 는 전체 화면 뿐만 아니 라 대화 상자 처럼 화면 에 직접 표시 할 수도 있다.또한 화면의 모든 위치(Activity 내부 와 Activity 외부 포함)를 누 르 면 Activity 를 닫 을 수 있 습 니 다.액 티 비 티 의 전통 적 인 스타일 인 액 티 비 티 는 안 드 로 이 드 의 입문 기술 을 배 우 는 것 이다.거의 모든 초보 자 들 이 Activity 에서 배운다.따라서 Activity 라 는 구성 요 소 는 안 드 로 이 드 개발 자 들 에 게 더 이상 익숙 하지 않다.다음은 Activity 의 기본 설정 을 살 펴 보 겠 습 니 다.

<activity android:name=".Main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
위의 설정 코드 는 전형 적 인 Activity 설정 입 니 다.이 설정 에 action 과 category 를 주로 지정 합 니 다.이 설정 을 누 르 면 Activity 가 전체 화면 에 가득 합 니 다.Android 에 도 많은 프로그램 이 내장 되 어 있 는데 대부분이 Activity 를 포함한다.예 를 들 어 그림 1 은 시계 프로그램 이자 전형 적 인 Activity 이다.

부유 활동
부상 Activity 란 데스크 톱 에 떠 있 는 것 으로 대화 상자 처럼 보 입 니 다.그림 2 와 같다.

사실 위의 효 과 를 실현 하 는 것 은 복잡 하지 않 습 니 다.AndroidManifest.xml 파일 에서 Activity 의탭 에 android:theme 속성 을 추가 하고 대화 상자 테 마 를 지정 하면 됩 니 다.코드 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.blogjava.mobile"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/date" android:label="@string/app_name">
<activity android:name=".Main" android:label="@string/app_name" android:theme="@android:style/Theme.Dialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="         "
android:layout_marginLeft="20dp" android:layout_marginRight="20dp" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:gravity="center"
android:layout_marginTop="20dp">
<Button android:id="@+id/btnCurrentDate"
android:layout_width="100dp" android:layout_height="wrap_content"
android:text="    " />
<Button android:id="@+id/btnFinish" android:layout_width="80dp"
android:layout_height="wrap_content" android:text="  " />
</LinearLayout>
</LinearLayout>
이 두 단 추 를 누 르 면 이벤트 코드 는 다음 과 같 습 니 다.

public void onClick(View view)
{
switch (view.getId())
{
case R.id.btnCurrentDate:
//          
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd");
dateDialog.setIcon(R.drawable.date);
dateDialog.setTitle("    :"
+ simpleDateFormat.format(new Date()));
dateDialog.setButton("  ", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
dateDialog.setOnDismissListener(new OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog)
{
new DateDialog.Builder(Main.this).setMessage(
"           .").create().show();
}
});
dateDialog.show();
break;
case R.id.btnFinish:
//     Activity
finish();
break;
}
}
'날짜 표시'단 추 를 누 르 면 그림 4 와 같 습 니 다.
 
모든 위치 에서 닫 을 수 있 는 대화 상 자 를 터치 합 니 다.
보통'닫 기'나 비슷 한 단 추 를 누 르 면 Activity 나 대화 상 자 를 닫 습 니 다.그러나 액 티 비 티 나 대화 상 자 를 닫 으 려 면 화면의 모든 위 치 를 누 르 십시오.Activity 를 닫 으 면 처리 하기 쉽 습 니 다.Activity 의 터치 이벤트 만 처리 하면 됩 니 다.코드 는 다음 과 같 습 니 다.

@Override
public boolean onTouchEvent(MotionEvent event)
{
finish();
return true;
}
대화 상자 라면 onTouchEvent 이벤트 방법 도 사용 할 수 있 습 니 다.하지만 보통 AlertDialog 대화 상 자 를 사용 합 니 다.따라서 onTouchEvent 이벤트 방법 을 사용 하려 면 AlertDialog 류 를 계승 해 야 한다.이전 절 에 제 시 된 onClick 방법 에서 현재 대화 상 자 를 표시 하 는 코드 에 DateDialog 류 를 사 용 했 습 니 다.이 종 류 는 AlertDialog 의 하위 클래스 입 니 다.코드 는 다음 과 같 습 니 다.

package net.blogjava.mobile;
import android.app.AlertDialog;
import android.content.Context;
import android.view.MotionEvent;
public class DateDialog extends AlertDialog
{
public DateDialog(Context context)
{
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
//          
dismiss();
return super.onTouchEvent(event);
}
}
위의 코드 에서 도 onTouchEvent 이벤트 방법 을 사 용 했 습 니 다.이 방법 에서 대화 상 자 를 닫 기 위해 dismiss 방법 을 호출 했 습 니 다.독 자 는 본 논문 의 예 를 실행 하여 화면의 모든 위 치 를 클릭 하여 대화 상자 와 부상 Activity 를 닫 을 수 있 는 지 볼 수 있 습 니 다.
총결산
이 논문 은 부유 Activity 와 터치 가 어느 위치 에서 든 닫 을 수 있 는 대화 상자 의 실현 을 소개 한다.부유 Activity 는요소 에 android:theme="@android:style/theme.Dialog"를 추가 하면 됩 니 다.어떤 위치 에서 든 대화 상자 나 Activity 를 닫 으 려 면 터치 이벤트(onTouch Event 방법)를 사용 해 야 합 니 다.대화 상자 라면 AlertDialog 류 를 계승 하 는 방식 으로 onTouchEvent 방법 을 사용 해 야 합 니 다.
위의 설정 코드 를 사용 할 때 표 시 된 Activity 는 그림 2 와 같 습 니 다.이 예 에 서 는 현재 날짜 와 닫 기 대화 상 자 를 표시 하기 위해 Activity 에 두 개의 단 추 를 추가 합 니 다.

좋은 웹페이지 즐겨찾기