Android UI 디자인 및 개발 의 PopupWindow 텐 센트 뉴스 하단 팝 업 메뉴
7701 단어 PopupWindow팝 업 메뉴
공식 문 서 는 이렇게 설명 합 니 다.이것 은 팝 업 창 입 니 다.임의의 보 기 를 표시 할 수 있 습 니 다.팝 업 창 이 나타 나 는 것 은 유동 용기 의 현재 활동 입 니 다.
1.먼저 간단 한 밤 을 만 들 고,그 효 과 는 다음 과 같다.
두 개의 레이아웃 파일 만 있 고 하 나 는 팝 업 창 레이아웃(그림 한 장 만 있 음)이 며 하 나 는 메 인 인터페이스 레이아웃(단추 하나 만 있 음)입 니 다.
그 다음 에 메 인 인터페이스 코드 에서 인 스 턴 스 PopupWindow 를 지정 하고 팝 업 인터페이스 를 지정 합 니 다.단 추 를 누 르 면 이벤트 에 팝 업 창 을 표시 하거나 숨 기 면 됩 니 다.코드 는 다음 과 같 습 니 다.
package com.yanis.demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout.LayoutParams;
import android.widget.PopupWindow;
public class PopupWindowActivity extends Activity {
PopupWindow pop;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popup_window);
btn = (Button) findViewById(R.id.btnShowWindow);
LayoutInflater inflater = LayoutInflater.from(this);
// -
View view = inflater.inflate(R.layout.my_popup_window, null);
// PopupWindow
pop = new PopupWindow(view, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, false);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (pop.isShowing()) {
// , ,
pop.dismiss();
} else {
// , ,
pop.showAsDropDown(v);
}
}
});
}
}
2.PopupWindow 팝 업 창 을 어떻게 실현 하 는 지 알 게 되 었 습 니 다.그 특성 을 이용 하여 시스템 자체 의 메뉴 표시 줄 을 교체 하고 텐 센트 뉴스 를 모방 하 는 메뉴 를 만 듭 니 다.효과 도 는 다음 과 같 습 니 다.레이아웃 같은 것 은 시간 이 걸 리 고 천천히 조정 하면 자 연 스 럽 게 나 옵 니 다.주로 메 인 인터페이스의 논리 코드 입 니 다.메뉴 는 PopupWindow 를 통 해 표 시 됩 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.
package com.yanis.popup_window;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener,
OnKeyListener {
PopupWindow pop;
TextView hideView;
Button btnCancel;
ImageView btnNight, btnWord, btnExit;
View view;
boolean isOut, isIn;//
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
/**
*
*/
private void initView() {
hideView = (TextView) findViewById(R.id.hideView);
LayoutInflater inflater = LayoutInflater.from(this);
// -
view = inflater.inflate(R.layout.menu_view, null);
btnNight = (ImageView) view.findViewById(R.id.btnNight);
btnWord = (ImageView) view.findViewById(R.id.btnWord);
btnExit = (ImageView) view.findViewById(R.id.btnExit);
btnCancel = (Button) view.findViewById(R.id.btnCancel);
}
/**
*
*/
private void initData() {
btnNight.setOnClickListener(this);
btnWord.setOnClickListener(this);
btnExit.setOnClickListener(this);
btnCancel.setOnClickListener(this);
view.setFocusableInTouchMode(true);
view.setOnKeyListener(this);
// PopupWindow
pop = new PopupWindow(view, LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, true);
/**
* PopupWindow
*/
// pop.setFocusable(true); // PopupWindow
// pop.setTouchable(true); // PopupWindow
// pop.setOutsideTouchable(true); // PopupWindow
// PopupWindow
pop.setAnimationStyle(R.style.MenuAnimationFade);
/**
* 。 null。 , popwindow
* ColorDrawable dw = new
* ColorDrawable(-00000);pop.setBackgroundDrawable(dw);
*/
pop.setBackgroundDrawable(new BitmapDrawable());
}
/**
*
*
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnNight:
changePopupWindowState();
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT)
.show();
break;
case R.id.btnWord:
changePopupWindowState();
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT)
.show();
break;
case R.id.btnExit:
exitTheDemo();
break;
case R.id.btnCancel:
changePopupWindowState();
break;
}
}
/**
*
*/
private void exitTheDemo() {
changePopupWindowState();
new AlertDialog.Builder(MainActivity.this).setMessage(" Demo ?")
.setPositiveButton(" ", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setNegativeButton(" ", null).show();
}
/**
* PopupWindow
*/
private void changePopupWindowState() {
if (pop.isShowing()) {
// , ,
pop.dismiss();
} else {
// , ,
pop.showAtLocation(hideView, Gravity.BOTTOM, 0, 0);
}
}
// Called when a key was pressed down and not handled by any of the views
// inside of the activity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU://
isOut = true;
changePopupWindowState();
break;
}
return super.onKeyDown(keyCode, event);
}
// Called when a hardware key is dispatched to a view.
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
if (isOut && !isIn) {
isOut = false;
isIn = true;
} else if (!isOut && isIn) {
isIn = false;
changePopupWindowState();
}
break;
}
return false;
}
}
소스 코드 주소:https://github.com/YeXiaoChao/Yc_ui_popup_window이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Flutter 질감 디자인 팝 업 메뉴PopupMenuButton 컨트롤 은 메뉴 컨트롤 을 팝 업 하고 컨트롤 을 누 르 면 메뉴 가 나타 납 니 다. 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.