package com.ittianyu.mobileguard.activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import com.ittianyu.mobileguard.R;
import com.ittianyu.mobileguard.activity.base.BaseActivityNoActionBar;
import com.ittianyu.mobileguard.domain.GridViewItemBean;
import com.ittianyu.mobileguard.engine.ProcessManagerEngine;
import com.ittianyu.mobileguard.engine.ServiceManagerEngine;
import com.ittianyu.mobileguard.strategy.maingridmenu.AdvancedToolsScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.AntivirusScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.CleanCacheScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.MsgSafeScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.PhoneSafeScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.ProgressManagerScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.SettingScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.SoftwareManagerScheme;
import com.ittianyu.mobileguard.strategy.maingridmenu.TrafficStatsCountScheme;
import java.util.Timer;
import java.util.TimerTask;
/**
* main activity
* extend BaseActivity
*/
public class MainActivity extends BaseActivityNoActionBar {
// constant
private static final long PERIOD = 3000;
// private static final int DURATION_ROTATE = 3000;
// view
private GridView gvMenu;
// private ImageView ivLightEffect;
private View rlCircle;
private TextView tvRamUseRate;
// data
private GridViewItemBean[] items;
private GridViewAdapter adapter = new GridViewAdapter();
private Typeface typeface;
private Timer timer = new Timer(true);// used for refresh RAM use rate
/**
* 1
* init view
*/
protected void initView() {
setContentView(R.layout.activity_main);
// bind
gvMenu = (GridView) findViewById(R.id.gv_menu);
// ivLightEffect = (ImageView) findViewById(R.id.iv_light_effect);
rlCircle = findViewById(R.id.rl_circle);
tvRamUseRate = (TextView) findViewById(R.id.tv_ram_use_rate);
// start animation
Animation rotateAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate_forever);
rlCircle.startAnimation(rotateAnimation);
// Animation blinkAnimation = AnimationUtils.loadAnimation(this, R.anim.blink_forever);
// ivLightEffect.startAnimation(blinkAnimation);
}
/**
* 2
* init date
*/
@Override
protected void initData() {
// load font
typeface = Typeface.createFromAsset(getAssets(), "fonts/ping_fang_light.ttf");
tvRamUseRate.setTypeface(typeface);
// create items
items = new GridViewItemBean[]{
new GridViewItemBean(R.drawable.ic_phone_safe, R.string.phone_security, new PhoneSafeScheme()),
new GridViewItemBean(R.drawable.ic_msg_safe, R.string.msg_safe, new MsgSafeScheme()),
new GridViewItemBean(R.drawable.ic_software_manager, R.string.software_manager, new SoftwareManagerScheme()),
new GridViewItemBean(R.drawable.ic_advanced_tools, R.string.advanced_tools, new AdvancedToolsScheme()),
new GridViewItemBean(R.drawable.ic_traffic_stats, R.string.traffic_stats, new TrafficStatsCountScheme()),
new GridViewItemBean(R.drawable.ic_progress_manager, R.string.process_manager, new ProgressManagerScheme()),
new GridViewItemBean(R.drawable.ic_antivirus, R.string.anti_virus, new AntivirusScheme()),
new GridViewItemBean(R.drawable.ic_setting, R.string.setting, new SettingScheme()),
new GridViewItemBean(R.drawable.ic_clean_cache, R.string.clean_cache, new CleanCacheScheme())
};
// set adapter
gvMenu.setAdapter(adapter);
// refresh RAM use rate
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
long freeMemory = ProcessManagerEngine.getFreeMemory(MainActivity.this);
long totalMemory = ProcessManagerEngine.getTotalMemory();
float rate = 1 - (float)((double)freeMemory / totalMemory);
final String useRate = String.format("%1$.0f", rate * 100);
// System.out.println(useRate);
runOnUiThread(new Runnable() {
@Override
public void run() {
tvRamUseRate.setText(useRate);
}
});
}
};
timer.schedule(timerTask, 0, PERIOD);
// request permissions
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
startActivity(new Intent(this, PermissionActivity.class));
return;
}
// check all services when start the app
ServiceManagerEngine.checkAndAutoStart(this);
}
/**
* 3
* init event
*/
protected void initEvent() {
gvMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
items[position].getScheme().onSelected(MainActivity.this);
}
});
}
/**
* stop timer
*/
@Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();
}
/**
* gv_menu adapter
*/
private class GridViewAdapter extends BaseAdapter {
@Override
public int getCount() {
return items.length;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
GridViewItemBean item = items[position];
View view = View.inflate(MainActivity.this, R.layout.item_main_gv_menu, null);
ImageView ivIcon = (ImageView) view.findViewById(R.id.iv_icon);
TextView tvName = (TextView) view.findViewById(R.id.tv_name);
ivIcon.setImageResource(item.getIconId());
tvName.setText(item.getNameId());
tvName.setTypeface(typeface);
return view;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
}