Как я могу плавно сменить представление на Window.setattributes?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как я могу плавно сменить представление на Window.setattributes?

Сообщение Anonymous »

Я разрабатываю проект Android от Java. Во -первых, я меняю деятельность на половину экрана. Затем, когда пользователь нажимает кнопку, активность станет полноэкранным экраном по анимации. Когда начнется анимация, представление встряхивает вниз (а именно представление сначала перемещается, а затем перемещается вниз). Код отображается следующим образом. < /P>

Код: Выделить всё

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AutoRouter.inject(this);

Window window = getWindow();
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
WindowManager.LayoutParams para = window.getAttributes();
para.height = (int) halfScreenHeight;
para.width = (int) (dm.widthPixels);
para.gravity = Gravity.BOTTOM;
window.setAttributes(para);
window.setDimAmount(0.70f);

window.getDecorView().setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 30);
}
});

window.getDecorView().setClipToOutline(true);

overridePendingTransition(R.anim.slide_in_bottom_ai_dialog, R.anim.slide_out_bottom_ai_dialog);
}

//when user click,it will call this function
public void changeDialogHeight(int mode, double height) {
Window window = getWindow();
WindowManager.LayoutParams para = window.getAttributes();
int currentHeight = para.height;
int targetHeight = 0;
int screenHeight = Utils.getScreenHeight(BaseApplication.get());
switch (mode) {
case 0:
targetHeight = screenHeight;
break;
case 1:
targetHeight = screenHeight / 2;
break;
case 2:
if(height > Utils.getScreenHeight(mContext) || height < 50){
height = Utils.getScreenHeight(mContext) / 2;
}
targetHeight = (int)height;
break;
}

ValueAnimator valueAnimator = ValueAnimator.ofInt(currentHeight, targetHeight);

valueAnimator.setDuration(400);

valueAnimator.setInterpolator(new LinearInterpolator());

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
runOnUiThread(new Runnable() {
@Override
public void run() {
int animatedValue = (int) animation.getAnimatedValue();

para.height = animatedValue;
window.setAttributes(para);
}
});
}
});

// 启动动画
valueAnimator.start();
}
Как я могу изменить свой код, чтобы сделать анимацию плавно?

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-smoothly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»