Work on issue #16135174: Apps page "smoke" gradient footer must be removed

New header in running services.  Not yet done.

Change-Id: Ibe2f4145796c7863ec80e0ea2d8d87dc910bac7e
This commit is contained in:
Dianne Hackborn
2014-07-23 13:38:41 -07:00
parent b125caa7ed
commit fe9590bb19
7 changed files with 248 additions and 145 deletions

View File

@@ -39,50 +39,6 @@
android:text="@string/no_applications"
android:textAppearance="?android:attr/textAppearanceLarge" />
</FrameLayout>
<!-- Force layout direction to LTR for now as we want the text to be at the same position in
any Locale included the RTL ones. Will need to fix LinearColorBar RTL support later.
Please also note the left/right gravities that would also need to be changed for proper
RTL support -->
<view class="com.android.settings.applications.LinearColorBar"
android:id="@+id/storage_color_bar"
android:layout_marginStart="@dimen/settings_side_margin"
android:layout_marginEnd="@dimen/settings_side_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-5dp"
android:orientation="horizontal"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingTop="30dp"
android:paddingBottom="1dp"
android:layoutDirection="ltr">
<TextView android:id="@+id/usedStorageText"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="#000"
android:singleLine="true" />
<TextView android:id="@+id/storageChartLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginTop="-20dp"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="?android:attr/textColorPrimary"
android:singleLine="true"
android:text="@string/internal_storage" />
<TextView android:id="@+id/freeStorageText"
android:layout_gravity="center_vertical|end"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="#000"
android:singleLine="true" />
</view>
</LinearLayout>
<LinearLayout android:id="@+id/loading_container"

View File

@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 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.
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textAlignment="viewStart"
android:text="@string/running_processes_header_title" />
<view class="com.android.settings.applications.LinearColorBar"
android:id="@+id/color_bar"
android:layout_width="match_parent"
android:layout_height="18sp"
android:layout_marginTop="8dp"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:baselineAligned="true">
<ImageView
android:layout_width="16sp"
android:layout_height="16sp"
android:scaleType="centerInside"
android:baselineAlignBottom="true"
android:src="@color/running_processes_system_ram"
android:contentDescription="@null" />
<TextView
android:id="@+id/systemSizePrefix"
android:text="@string/running_processes_header_system_prefix"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="16dp"
android:maxLines="1" />
<ImageView
android:src="@drawable/dotted_line_480px"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="1px"
android:layout_marginStart="1dip"
android:layout_marginEnd="1dip"
android:baselineAlignBottom="true"
android:scaleType="center"
android:contentDescription="@null" />
<TextView
android:id="@+id/systemSize"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxLines="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal"
android:baselineAligned="true">
<ImageView
android:layout_width="16sp"
android:layout_height="16sp"
android:baselineAlignBottom="true"
android:scaleType="centerInside"
android:src="@color/running_processes_apps_ram"
android:contentDescription="@null" />
<TextView
android:id="@+id/appsSizePrefix"
android:text="@string/running_processes_header_apps_prefix"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="16dp"
android:maxLines="1"
android:paddingTop="6dip" />
<ImageView
android:src="@drawable/dotted_line_480px"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="1px"
android:baselineAlignBottom="true"
android:layout_marginStart="1dip"
android:layout_marginEnd="1dip"
android:scaleType="center"
android:contentDescription="@null" />
<TextView
android:id="@+id/appsSize"
android:paddingTop="6dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxLines="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal"
android:baselineAligned="true">
<ImageView
android:layout_width="16sp"
android:layout_height="16sp"
android:baselineAlignBottom="true"
android:scaleType="centerInside"
android:src="@color/running_processes_free_ram"
android:contentDescription="@null" />
<TextView
android:id="@+id/freeSizePrefix"
android:text="@string/running_processes_header_free_prefix"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="16dp"
android:maxLines="1"
android:paddingTop="6dip" />
<ImageView
android:src="@drawable/dotted_line_480px"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="1px"
android:baselineAlignBottom="true"
android:layout_marginStart="1dip"
android:layout_marginEnd="1dip"
android:scaleType="center"
android:contentDescription="@null" />
<TextView
android:id="@+id/freeSize"
android:paddingTop="6dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:maxLines="1" />
</LinearLayout>
<TextView
android:id="@+id/listHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textAlignment="viewStart"
android:text="@string/running_processes_header_footer" />
</LinearLayout>

View File

@@ -37,52 +37,4 @@
android:text="@string/no_running_services"
android:textAppearance="?android:attr/textAppearanceLarge" />
</FrameLayout>
<!-- Force layout direction to LTR for now as we want the text to be at the same position in
any Locale included the RTL ones. Will need to fix LinearColorBar RTL support later.
Please also note the left/right gravities that would also need to be changed for proper
RTL support -->
<view class="com.android.settings.applications.LinearColorBar"
android:id="@+id/color_bar"
android:layout_marginStart="@dimen/settings_side_margin"
android:layout_marginEnd="@dimen/settings_side_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-5dp"
android:orientation="horizontal"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingTop="30dp"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:paddingBottom="1dp"
android:layoutDirection="ltr">
<TextView android:id="@+id/foregroundText"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusable="true"
android:gravity="left|bottom"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="#000"
android:singleLine="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginTop="-20dp"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="?android:attr/textColorPrimary"
android:singleLine="true"
android:text="@string/memory" />
<TextView android:id="@+id/backgroundText"
android:layout_gravity="center_vertical|end"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusable="true"
android:gravity="right|bottom"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
android:textColor="#000"
android:singleLine="true" />
</view>
</LinearLayout>

View File

@@ -56,6 +56,10 @@
<color name="unlock_pattern_view_success_color">@color/theme_accent</color>
<color name="unlock_pattern_view_error_color">#fff4511e</color>
<color name="running_processes_system_ram">#ff384248</color>
<color name="running_processes_apps_ram">#ff009587</color>
<color name="running_processes_free_ram">#ffced7db</color>
<!-- Palette colors referenced by top-level themes. -->
<color name="theme_primary">#ff263238</color>
<color name="theme_primary_dark">#ff21272b</color>

View File

@@ -3096,6 +3096,28 @@
<!-- Descriptive text of a running process: plural process, plural service. -->
<string name="running_processes_item_description_p_p"><xliff:g id="numprocess">%1$d</xliff:g>
processes and <xliff:g id="numservices">%2$d</xliff:g> services</string>
<!-- [CHAR LIMIT=NONE] Top title of the header of the running processes/services list. -->
<string name="running_processes_header_title">Device memory</string>
<!-- [CHAR LIMIT=NONE] Bottom test of the header leading in to the running
processes/services list. -->
<string name="running_processes_header_footer">App RAM usage</string>
<!-- [CHAR LIMIT=20] Running processes/services header: prefix for line showing RAM
used by system. -->
<string name="running_processes_header_system_prefix">System</string>
<!-- [CHAR LIMIT=20] Running processes/services header: prefix for line showing RAM
used by apps. -->
<string name="running_processes_header_apps_prefix">Apps</string>
<!-- [CHAR LIMIT=20] Running processes/services header: prefix for line showing RAM
that is free. -->
<string name="running_processes_header_free_prefix">Free</string>
<!-- [CHAR LIMIT=20] Running processes/services header: prefix for line showing total RAM
used by everything. -->
<string name="running_processes_header_used_prefix">Used</string>
<!-- [CHAR LIMIT=20] Running processes/services header: prefix for line showing portion
of free RAM that is used by cached apps. -->
<string name="running_processes_header_cached_prefix">Cached</string>
<!-- [CHAR_LIMIT=20] Running processes/services header: formatter for RAM use amount. -->
<string name="running_processes_header_ram"><xliff:g id="ram">%1$s</xliff:g> of RAM</string>
<!-- Details about an application's running services. -->
<string name="runningservicedetails_settings_title">Running app</string>

View File

@@ -199,10 +199,10 @@ public class ManageApplications extends Fragment implements
// Custom view used to display running processes
private RunningProcessesView mRunningProcessesView;
private LinearColorBar mColorBar;
private TextView mStorageChartLabel;
private TextView mUsedStorageText;
private TextView mFreeStorageText;
//private LinearColorBar mColorBar;
//private TextView mStorageChartLabel;
//private TextView mUsedStorageText;
//private TextView mFreeStorageText;
private long mFreeStorage = 0, mAppStorage = 0, mTotalStorage = 0;
private long mLastUsedStorage, mLastAppStorage, mLastFreeStorage;
@@ -263,17 +263,17 @@ public class ManageApplications extends Fragment implements
mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter);
mListView.setAdapter(mApplications);
mListView.setRecyclerListener(mApplications);
mColorBar = (LinearColorBar)mListContainer.findViewById(R.id.storage_color_bar);
mStorageChartLabel = (TextView)mListContainer.findViewById(R.id.storageChartLabel);
mUsedStorageText = (TextView)mListContainer.findViewById(R.id.usedStorageText);
mFreeStorageText = (TextView)mListContainer.findViewById(R.id.freeStorageText);
//mColorBar = (LinearColorBar)mListContainer.findViewById(R.id.storage_color_bar);
//mStorageChartLabel = (TextView)mListContainer.findViewById(R.id.storageChartLabel);
//mUsedStorageText = (TextView)mListContainer.findViewById(R.id.usedStorageText);
//mFreeStorageText = (TextView)mListContainer.findViewById(R.id.freeStorageText);
Utils.prepareCustomPreferencesList(contentParent, contentChild, mListView, false);
if (mFilter == FILTER_APPS_SDCARD) {
mStorageChartLabel.setText(mOwner.getActivity().getText(
R.string.sd_card_storage));
//mStorageChartLabel.setText(mOwner.getActivity().getText(
// R.string.sd_card_storage));
} else {
mStorageChartLabel.setText(mOwner.getActivity().getText(
R.string.internal_storage));
//mStorageChartLabel.setText(mOwner.getActivity().getText(
// R.string.internal_storage));
}
applyCurrentStorage();
}
@@ -389,6 +389,7 @@ public class ManageApplications extends Fragment implements
if (mRootView == null) {
return;
}
/*
if (mTotalStorage > 0) {
BidiFormatter bidiFormatter = BidiFormatter.getInstance();
mColorBar.setRatios((mTotalStorage-mFreeStorage-mAppStorage)/(float)mTotalStorage,
@@ -419,6 +420,7 @@ public class ManageApplications extends Fragment implements
mFreeStorageText.setText("");
}
}
*/
}
@Override

View File

@@ -16,6 +16,7 @@
package com.android.settings.applications;
import android.content.res.Resources;
import android.text.BidiFormatter;
import com.android.internal.util.MemInfoReader;
import com.android.settings.R;
@@ -71,9 +72,11 @@ public class RunningProcessesView extends FrameLayout
RunningState.BaseItem mCurSelected;
ListView mListView;
View mHeader;
ServiceListAdapter mAdapter;
LinearColorBar mColorBar;
TextView mBackgroundProcessText;
TextView mAppsProcessText;
TextView mForegroundProcessText;
int mLastNumBackgroundProcesses = -1;
@@ -316,7 +319,7 @@ public class RunningProcessesView extends FrameLayout
void refreshUi(boolean dataChanged) {
if (dataChanged) {
ServiceListAdapter adapter = (ServiceListAdapter)(mListView.getAdapter());
ServiceListAdapter adapter = mAdapter;
adapter.refreshItems();
adapter.notifyDataSetChanged();
}
@@ -338,38 +341,35 @@ public class RunningProcessesView extends FrameLayout
synchronized (mState.mLock) {
if (mLastNumBackgroundProcesses != mState.mNumBackgroundProcesses
|| mLastBackgroundProcessMemory != mState.mBackgroundProcessMemory
|| mLastNumForegroundProcesses != mState.mNumForegroundProcesses
|| mLastForegroundProcessMemory != mState.mForegroundProcessMemory
|| mLastNumServiceProcesses != mState.mNumServiceProcesses
|| mLastServiceProcessMemory != mState.mServiceProcessMemory
|| mLastAvailMemory != availMem) {
mLastNumBackgroundProcesses = mState.mNumBackgroundProcesses;
mLastBackgroundProcessMemory = mState.mBackgroundProcessMemory;
mLastForegroundProcessMemory = mState.mForegroundProcessMemory;
mLastServiceProcessMemory = mState.mServiceProcessMemory;
mLastAvailMemory = availMem;
long freeMem = mLastAvailMemory + mLastBackgroundProcessMemory;
BidiFormatter bidiFormatter = BidiFormatter.getInstance();
String sizeStr = bidiFormatter.unicodeWrap(
Formatter.formatShortFileSize(getContext(), freeMem));
mBackgroundProcessText.setText(getResources().getString(
R.string.service_background_processes, sizeStr));
R.string.running_processes_header_ram, sizeStr));
sizeStr = bidiFormatter.unicodeWrap(
Formatter.formatShortFileSize(getContext(),
mMemInfoReader.getTotalSize() - freeMem));
mLastForegroundProcessMemory + mLastServiceProcessMemory));
mAppsProcessText.setText(getResources().getString(
R.string.running_processes_header_ram, sizeStr));
sizeStr = bidiFormatter.unicodeWrap(
Formatter.formatShortFileSize(getContext(),
mMemInfoReader.getTotalSize() - freeMem
- mLastForegroundProcessMemory - mLastServiceProcessMemory));
mForegroundProcessText.setText(getResources().getString(
R.string.service_foreground_processes, sizeStr));
R.string.running_processes_header_ram, sizeStr));
}
if (mLastNumForegroundProcesses != mState.mNumForegroundProcesses
|| mLastForegroundProcessMemory != mState.mForegroundProcessMemory
|| mLastNumServiceProcesses != mState.mNumServiceProcesses
|| mLastServiceProcessMemory != mState.mServiceProcessMemory) {
mLastNumForegroundProcesses = mState.mNumForegroundProcesses;
mLastForegroundProcessMemory = mState.mForegroundProcessMemory;
mLastNumServiceProcesses = mState.mNumServiceProcesses;
mLastServiceProcessMemory = mState.mServiceProcessMemory;
/*
String sizeStr = Formatter.formatShortFileSize(getContext(),
mLastForegroundProcessMemory + mLastServiceProcessMemory);
mForegroundProcessText.setText(getResources().getString(
R.string.service_foreground_processes, sizeStr));
*/
}
float totalMem = mMemInfoReader.getTotalSize();
float totalShownMem = availMem + mLastBackgroundProcessMemory
+ mLastServiceProcessMemory;
@@ -428,27 +428,16 @@ public class RunningProcessesView extends FrameLayout
mListView.setRecyclerListener(this);
mAdapter = new ServiceListAdapter(mState);
mListView.setAdapter(mAdapter);
mColorBar = (LinearColorBar)findViewById(R.id.color_bar);
mBackgroundProcessText = (TextView)findViewById(R.id.backgroundText);
mBackgroundProcessText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.setShowBackground(true);
if (mOwner != null) {
mOwner.getActivity().invalidateOptionsMenu();
}
}
});
mForegroundProcessText = (TextView)findViewById(R.id.foregroundText);
mForegroundProcessText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.setShowBackground(false);
if (mOwner != null) {
mOwner.getActivity().invalidateOptionsMenu();
}
}
});
mHeader = inflater.inflate(R.layout.running_processes_header, null);
mListView.addHeaderView(mHeader);
mColorBar = (LinearColorBar)mHeader.findViewById(R.id.color_bar);
Resources res = getResources();
mColorBar.setColors(res.getColor(R.color.running_processes_system_ram),
res.getColor(R.color.running_processes_apps_ram),
res.getColor(R.color.running_processes_free_ram));
mBackgroundProcessText = (TextView)mHeader.findViewById(R.id.freeSize);
mAppsProcessText = (TextView)mHeader.findViewById(R.id.appsSize);
mForegroundProcessText = (TextView)mHeader.findViewById(R.id.systemSize);
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
mAm.getMemoryInfo(memInfo);