Androidがページを開いてデータをロードするときのマスクマスク効果
3142 ワード
Androidの開発過程では、データをロードすることがあります.より良いユーザー体験のために、progressを使用してデータがロードされていることを体現することがよくあります.これはシステムが提供しているので、直接呼び出すことができます.しかし、時には私たちのニーズにあまり満足していないような気がします.そのため、マスク層を使ってユーザー体験をよりよく変えようとしました.
直接コード:
これにより、データをロードするときに、データをロードしているマスク効果を表示することができます.
直接コード:
/**
*
* @author
* @date
*/
public class MainActivity extends Activity implements OnClickListener{
PopupWindow popupWindow;
private WaitScreen waitScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (popupWindow!=null) {
waitScreen.close();
}
}
}, 3*1000);
}
@Override
public void onAttachedToWindow() {
show();
super.onAttachedToWindow();
}
private void show() {
waitScreen=new WaitScreen(this);
popupWindow=waitScreen.show();
}
@Override
public void onClick(View v) {
show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
if (popupWindow!=null) {
waitScreen.close();
return true;
}
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
}
/**
*
* @author
* @date
*/
public class WaitScreen {
private PopupWindow popupWindow;
private Context context;
private View view;
public WaitScreen(Context context) {
this.context=context;
view=LayoutInflater.from(context).inflate(R.layout.poplayout, null);
popupWindow=new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}
/**
*
* @author
* @date
* @return
*/
public PopupWindow show() {
popupWindow.showAsDropDown(view);
return popupWindow;
}
/**
*
* @author
* @date
*/
public void close() {
if (popupWindow!=null&&popupWindow.isShowing()) {
popupWindow.setFocusable(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
popupWindow.dismiss();
}
}, 500);
View progressBar1=view.findViewById(R.id.progressBar1);
progressBar1.setVisibility(View.GONE);
View left=view.findViewById(R.id.left);
View right=view.findViewById(R.id.right);
TranslateAnimation leftAnimation= new TranslateAnimation(0,-left.getWidth(),0f,0f);
leftAnimation.setDuration(500);// 3
leftAnimation.setInterpolator(context, android.R.anim.overshoot_interpolator);//
leftAnimation.setFillAfter(true);// ( )
left.startAnimation(leftAnimation);
TranslateAnimation rightAnimation= new TranslateAnimation(0f,left.getWidth(),0f,0f);
rightAnimation.setDuration(500);// 3
rightAnimation.setInterpolator(context, android.R.anim.overshoot_interpolator);//
rightAnimation.setFillAfter(true);// ( )
right.startAnimation(rightAnimation);
}
}
/**
*
* @author
* @date
*/
public void dismiss() {
if (popupWindow!=null&&popupWindow.isShowing()) {
popupWindow.dismiss();
}
}
}
これにより、データをロードするときに、データをロードしているマスク効果を表示することができます.