/*
* Copyright (c) 2015, 张涛.
*
* 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 org.kymjs.blog.ui;
import org.kymjs.blog.R;
import org.kymjs.blog.ui.fragment.BlogFragment;
import org.kymjs.blog.ui.fragment.FindFragment;
import org.kymjs.blog.ui.fragment.MineFragment;
import org.kymjs.blog.ui.fragment.TitleBarFragment;
import org.kymjs.blog.utils.KJAnimations;
import org.kymjs.kjframe.ui.BindView;
import org.kymjs.kjframe.ui.KJActivityStack;
import android.view.KeyEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.RadioButton;
/**
* 应用主界面
*
* @author kymjs (https://www.kymjs.com/)
* @since 2015-3
*/
public class Main extends TitleBarActivity {
@BindView(id = R.id.bottombar_content1, click = true)
private RadioButton mRbtnContent1;
@BindView(id = R.id.bottombar_content2, click = true)
private RadioButton mRbtnContent2;
@BindView(id = R.id.bottombar_content3, click = true)
private RadioButton mRbtnContent3;
private TitleBarFragment contentFragment1;
private TitleBarFragment contentFragment2;
private TitleBarFragment contentFragment3;
private TitleBarFragment currentFragment;
private float titleBarHeight;
private boolean isOnKeyBacking;
@Override
public void setRootView() {
setContentView(R.layout.aty_main);
}
@Override
public void initData() {
super.initData();
contentFragment1 = new BlogFragment();
contentFragment2 = new FindFragment();
contentFragment3 = new MineFragment();
titleBarHeight = getResources().getDimension(R.dimen.titlebar_height);
}
@Override
public void initWidget() {
super.initWidget();
changeFragment(contentFragment1);
}
@Override
public void widgetClick(View v) {
super.widgetClick(v);
switch (v.getId()) {
case R.id.bottombar_content1:
changeFragment(contentFragment1);
break;
case R.id.bottombar_content2:
changeFragment(contentFragment2);
break;
case R.id.bottombar_content3:
changeFragment(contentFragment3);
break;
default:
break;
}
}
@Override
protected void onBackClick() {
super.onBackClick();
currentFragment.onBackClick();
}
@Override
protected void onMenuClick() {
super.onMenuClick();
currentFragment.onMenuClick();
}
public void changeFragment(TitleBarFragment targetFragment) {
currentFragment = targetFragment;
super.changeFragment(R.id.main_content, targetFragment);
}
/********************** 再按一下退出 *****************************/
/**
* 取消退出
*/
private void cancleExit() {
Animation anim = KJAnimations.getTranslateAnimation(0, 0,
titleBarHeight, 0, 300);
mTvTitle.startAnimation(anim);
Animation anim2 = KJAnimations.getTranslateAnimation(0, 0,
titleBarHeight, 300, 0);
anim2.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
mTvDoubleClickTip.setVisibility(View.GONE);
}
});
mTvDoubleClickTip.startAnimation(anim2);
}
/**
* 显示退出提示
*/
private void showExitTip() {
mTvDoubleClickTip.setVisibility(View.VISIBLE);
Animation anim = KJAnimations.getTranslateAnimation(0, 0, 0,
titleBarHeight, 300);
mTvTitle.startAnimation(anim);
Animation anim2 = KJAnimations.getTranslateAnimation(0, 0,
titleBarHeight, 0, 300);
mTvDoubleClickTip.startAnimation(anim2);
}
private final Runnable onBackTimeRunnable = new Runnable() {
@Override
public void run() {
isOnKeyBacking = false;
cancleExit();
}
};
@Override
public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isOnKeyBacking) {
mMainLoopHandler.removeCallbacks(onBackTimeRunnable);
isOnKeyBacking = false;
// UIHelper.toHome(aty);
KJActivityStack.create().appExit(aty);
} else {
isOnKeyBacking = true;
showExitTip();
mMainLoopHandler.postDelayed(onBackTimeRunnable, 2000);
}
return true;
// } else if (keyCode == KeyEvent.KEYCODE_MENU) {
// return true;
} else {
return super.onKeyDown(keyCode, event);
}
};
}