冲刺2

主体

package timeline.lizimumu.com.t.ui;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.transition.Fade;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityOptionsCompat;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import timeline.lizimumu.com.t.GlideApp;
import timeline.lizimumu.com.t.R;
import timeline.lizimumu.com.t.data.AppItem;
import timeline.lizimumu.com.t.data.DataManager;
import timeline.lizimumu.com.t.db.DbIgnoreExecutor;
import timeline.lizimumu.com.t.service.AlarmService;
import timeline.lizimumu.com.t.service.AppService;
import timeline.lizimumu.com.t.util.AppUtil;
import timeline.lizimumu.com.t.util.PreferenceManager;


public class MainActivity extends AppCompatActivity {

private LinearLayout mSort;
private Switch mSwitch;
private TextView mSwitchText;
private RecyclerView mList;
private MyAdapter mAdapter;
private AlertDialog mDialog;
private SwipeRefreshLayout mSwipe;
private TextView mSortName;
private long mTotal;
private int mDay;
private PackageManager mPackageManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// https://guides.codepath.com/android/Shared-Element-Activity-Transition
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setExitTransition(new Fade(Fade.OUT));
setContentView(R.layout.activity_main);
mPackageManager = getPackageManager();

mSort = findViewById(R.id.sort_group);
mSortName = findViewById(R.id.sort_name);
mSwitch = findViewById(R.id.enable_switch);
mSwitchText = findViewById(R.id.enable_text);
mAdapter = new MyAdapter();

mList = findViewById(R.id.list);
mList.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mList.getContext(), DividerItemDecoration.VERTICAL);
dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.divider, getTheme()));
mList.addItemDecoration(dividerItemDecoration);
mList.setAdapter(mAdapter);

initLayout();
initEvents();
initSpinner();
initSort();

if (DataManager.getInstance().hasPermission(getApplicationContext())) {
process();
startService(new Intent(this, AlarmService.class));
}
}

@Override
public void finish() {
moveTaskToBack(true);
}

private void initLayout() {
mSwipe = findViewById(R.id.swipe_refresh);
if (DataManager.getInstance().hasPermission(getApplicationContext())) {
mSwitchText.setText(R.string.enable_apps_monitoring);
mSwitch.setVisibility(View.GONE);
mSort.setVisibility(View.VISIBLE);
mSwipe.setEnabled(true);
} else {
mSwitchText.setText(R.string.enable_apps_monitor);
mSwitch.setVisibility(View.VISIBLE);
mSort.setVisibility(View.GONE);
mSwitch.setChecked(false);
mSwipe.setEnabled(false);
}
}

private void initSort() {
if (DataManager.getInstance().hasPermission(getApplicationContext())) {
mSort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
triggerSort();
}
});
}
}

private void triggerSort() {
mDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.sort)
.setSingleChoiceItems(R.array.sort, PreferenceManager.getInstance().getInt(PreferenceManager.PREF_LIST_SORT), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
PreferenceManager.getInstance().putInt(PreferenceManager.PREF_LIST_SORT, i);
process();
mDialog.dismiss();
}
})
.create();
mDialog.show();
}

private void initSpinner() {
if (DataManager.getInstance().hasPermission(getApplicationContext())) {
Spinner spinner = findViewById(R.id.spinner);
spinner.setVisibility(View.VISIBLE);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.duration, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (mDay != i) {
int[] values = getResources().getIntArray(R.array.duration_int);
mDay = values[i];
process();
}
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}

private void initEvents() {
if (!DataManager.getInstance().hasPermission(getApplicationContext())) {
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
Intent intent = new Intent(MainActivity.this, AppService.class);
intent.putExtra(AppService.SERVICE_ACTION, AppService.SERVICE_ACTION_CHECK);
startService(intent);
}
}
});
}
mSwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
process();
}
});
}

@Override
protected void onResume() {
super.onResume();
if (!DataManager.getInstance().hasPermission(getApplicationContext())) {
mSwitch.setChecked(false);
}
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (DataManager.getInstance().hasPermission(this)) {
mSwipe.setEnabled(true);
mSort.setVisibility(View.VISIBLE);
mSwitch.setVisibility(View.GONE);
initSpinner();
initSort();
process();
}
}

private void process() {
if (DataManager.getInstance().hasPermission(getApplicationContext())) {
mList.setVisibility(View.INVISIBLE);
int sortInt = PreferenceManager.getInstance().getInt(PreferenceManager.PREF_LIST_SORT);
mSortName.setText(getSortName(sortInt));
new MyAsyncTask().execute(sortInt, mDay);
}
}

private String getSortName(int sortInt) {
// return getResources().getStringArray(R.array.sort)[sortInt];
return getResources().getString(R.string.sort_by);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
AppItem info = mAdapter.getItemInfoByPosition(item.getOrder());
switch (item.getItemId()) {
case R.id.ignore:
DbIgnoreExecutor.getInstance().insertItem(info);
process();
Toast.makeText(this, R.string.ignore_success, Toast.LENGTH_SHORT).show();
return true;
case R.id.open:
startActivity(mPackageManager.getLaunchIntentForPackage(info.mPackageName));
return true;
case R.id.more:
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + info.mPackageName));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
default:
return super.onContextItemSelected(item);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
startActivityForResult(new Intent(MainActivity.this, SettingsActivity.class), 1);
return true;
case R.id.sort:
triggerSort();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(">>>>>>>>", "result code " + requestCode + " " + resultCode);
if (resultCode > 0) process();
}

关于

package timeline.lizimumu.com.t.ui;

import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;

import java.util.Locale;

import timeline.lizimumu.com.t.BuildConfig;
import timeline.lizimumu.com.t.R;

public class AboutActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(R.string.about);
}

((TextView) findViewById(R.id.version)).setText(
String.format(Locale.getDefault(),
getResources().getString(R.string.version), BuildConfig.VERSION_NAME));
}
}

@Override
protected void onDestroy() {
super.onDestroy();
if (mDialog != null) mDialog.dismiss();
}

class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

private List<AppItem> mData;

MyAdapter() {
super();
mData = new ArrayList<>();
}

void updateData(List<AppItem> data) {
mData = data;
notifyDataSetChanged();
}

AppItem getItemInfoByPosition(int position) {
if (mData.size() > position) {
return mData.get(position);
}
return null;
}

}

posted @ 2022-04-23 23:12  stdxxd  阅读(44)  评论(0)    收藏  举报