UI: Setting Activity.

This commit is contained in:
Lody 2017-06-12 17:30:13 +08:00
parent 352684d831
commit 61d40ddd80
7 changed files with 182 additions and 2 deletions

View File

@ -23,6 +23,10 @@
</intent-filter>
</activity>
<activity
android:name=".ui.settings.SettingActivity"
android:theme="@style/Theme.AppCompat" />
<service
android:name=".services.NeoTermService"
android:enabled="true" />

View File

@ -0,0 +1,124 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* 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 android.support.v7.app;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls
* to be used with AppCompat.
* <p>
* This technique can be used with an {@link android.app.Activity} class, not just
* {@link android.preference.PreferenceActivity}.
*/
public abstract class AppCompatPreferenceActivity extends PreferenceActivity {
private AppCompatDelegate mDelegate;
@Override
protected void onCreate(Bundle savedInstanceState) {
getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
getDelegate().onPostCreate(savedInstanceState);
}
public ActionBar getSupportActionBar() {
return getDelegate().getSupportActionBar();
}
public void setSupportActionBar(@Nullable Toolbar toolbar) {
getDelegate().setSupportActionBar(toolbar);
}
@Override
public MenuInflater getMenuInflater() {
return getDelegate().getMenuInflater();
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}
@Override
public void setContentView(View view) {
getDelegate().setContentView(view);
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().setContentView(view, params);
}
@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().addContentView(view, params);
}
@Override
protected void onPostResume() {
super.onPostResume();
getDelegate().onPostResume();
}
@Override
protected void onTitleChanged(CharSequence title, int color) {
super.onTitleChanged(title, color);
getDelegate().setTitle(title);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getDelegate().onConfigurationChanged(newConfig);
}
@Override
protected void onStop() {
super.onStop();
getDelegate().onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
getDelegate().onDestroy();
}
public void invalidateOptionsMenu() {
getDelegate().invalidateOptionsMenu();
}
private AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = AppCompatDelegate.create(this, null);
}
return mDelegate;
}
}

View File

@ -18,6 +18,7 @@ import io.neoterm.R
import io.neoterm.backend.TerminalSession
import io.neoterm.preference.NeoTermPreference
import io.neoterm.services.NeoTermService
import io.neoterm.ui.settings.SettingActivity
import io.neoterm.view.tab.*
@ -209,6 +210,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection {
return Toolbar.OnMenuItemClickListener { item ->
when (item.itemId) {
R.id.menu_item_settings -> {
startActivity(Intent(this, SettingActivity::class.java))
true
}
else -> false

View File

@ -0,0 +1,30 @@
package io.neoterm.ui.settings
import android.os.Bundle
import android.support.v7.app.AppCompatPreferenceActivity
import android.view.MenuItem
import io.neoterm.R
/**
* @author Lody
*/
class SettingActivity : AppCompatPreferenceActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportActionBar.title = getString(R.string.settings)
supportActionBar.setDisplayHomeAsUpEnabled(true)
addPreferencesFromResource(R.xml.settings_main)
}
override fun onBuildHeaders(target: MutableList<Header>?) {
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item?.itemId) {
android.R.id.home ->
finish()
}
return super.onOptionsItemSelected(item)
}
}

View File

@ -24,7 +24,7 @@ License.
<item
android:id="@+id/menu_item_settings"
android:title="@string/menu_settings"
android:title="@string/settings"
app:showAsAction="never"/>
</menu>

View File

@ -5,5 +5,5 @@
<string name="text_selection_more">More</string>
<string name="toggle_tab_switcher_menu_item">Toggle switcher</string>
<string name="menu_settings">Settings</string>
<string name="settings">Settings</string>
</resources>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:summary="设置通用的选项"
android:title="通用设置" />
<Preference
android:summary="设置界面有关的选项"
android:title="界面选项" />
<Preference
android:title="软件包选项"
android:summary="设置软件包有关的选项" />
<Preference
android:title="关于"/>
</PreferenceScreen>