/* * Copyright 2015 Google Inc. * * 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 com.google.android.apps.dashclock.configuration; import android.app.backup.BackupManager; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; import net.nurik.roman.dashclock.BuildConfig; import net.nurik.roman.dashclock.R; /** * Fragment for allowing the user to configure advanced appearance settings. */ public class ConfigureAppearanceMoreFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { private View mListBackgroundView; private ListView mListView; public ConfigureAppearanceMoreFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add 'advanced' preferences. addPreferencesFromResource(R.xml.pref_appearance); // Bind the summaries of EditText/List/Dialog/Ringtone preferences to // their values. When their values change, their summaries are updated // to reflect the new value, per the Android Design guidelines. BaseSettingsActivity.bindPreferenceSummaryToValue( findPreference(AppearanceConfig.PREF_HOMESCREEN_BACKGROUND_OPACITY)); BaseSettingsActivity.bindPreferenceSummaryToValue( findPreference(AppearanceConfig.PREF_LOCKSCREEN_BACKGROUND_OPACITY)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Preference p = findPreference("pref_category_lockscreen"); getPreferenceScreen().removePreference(p); } } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { super.onPause(); getPreferenceManager().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_configure_appearance_more, container, false); mListBackgroundView = rootView.findViewById(R.id.listview_background); mListView = (ListView) rootView.findViewById(android.R.id.list); mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { updateListBackgroundPosition(); } }); return rootView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); updateListBackgroundPosition(); } private void updateListBackgroundPosition() { int topPadding = mListView.getPaddingTop(); int top = topPadding; if (mListView.getChildCount() > 0) { if (mListView.getFirstVisiblePosition() == 0) { top = mListView.getChildAt(0).getTop(); } else { top = 0; } } top = Math.max(0, top); mListBackgroundView.setTranslationY(top); ((ConfigureAppearanceFragment) getParentFragment()).setAppearanceContainerTranslationY(top - topPadding); } @Override public void onSharedPreferenceChanged(SharedPreferences sp, String key) { new BackupManager(getActivity()).dataChanged(); } }