/*
* Copyright 2016. SHENQINCI(沈钦赐)<dev@qinc.me>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ren.qinc.markdowneditors.engine;
import android.app.Activity;
import android.os.Build;
import android.support.annotation.ColorRes;
import android.support.annotation.NonNull;
import android.support.v7.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import ren.qinc.markdowneditors.utils.ColorUtils;
/**
* ActionMode回调 状态栏又要保持透明,又要有颜色
* 可以用v7包下的ActionMode也可以用普通的ActionMode
* 如果是v7 则startSupportActionMode(pasteModeCallback);
* 普通的startActionMode(pasteModeCallback);
* Created by 沈钦赐 on 16/2/3.
*/
public abstract class ActionModeCallback implements ActionMode.Callback {
private static float DEFAULT_ALPHA = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? 0.1f : 0.2f;
protected int statusBarColor;
private Activity mActivity;
private int mActionModeStatusBarColor = 0;
protected ActionModeCallback(@NonNull Activity activity, @ColorRes int actionModeStatusBarColorRes) {
this.mActionModeStatusBarColor = ColorUtils.getAlphaColor(activity.getResources().getColor(actionModeStatusBarColorRes), (int) ((1 - DEFAULT_ALPHA) * 255));
this.mActivity = activity;
}
@Override
public final boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
statusBarColor = mActivity.getWindow().getStatusBarColor();
//set your gray color
mActivity.getWindow().setStatusBarColor(mActionModeStatusBarColor);
// mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
return onCreateActionModeCustom(mode, menu);
}
public abstract boolean onCreateActionModeCustom(ActionMode mode, Menu menu);
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public final void onDestroyActionMode(ActionMode mode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
mActivity.getWindow().setStatusBarColor(statusBarColor);
}
onDestroyActionModeCustom(mode);
}
public abstract void onDestroyActionModeCustom(ActionMode mode);
}