/* * Copyright (C) 2006 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 com.android.settings; import android.app.Activity; import android.content.ContentResolver; import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Bundle; import android.provider.Settings; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; public class Display extends Activity implements View.OnClickListener { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.display); mFontSize = (Spinner) findViewById(R.id.fontSize); mFontSize.setOnItemSelectedListener(mFontSizeChanged); String[] states = new String[3]; Resources r = getResources(); states[0] = r.getString(R.string.small_font); states[1] = r.getString(R.string.medium_font); states[2] = r.getString(R.string.large_font); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, states); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); mFontSize.setAdapter(adapter); mPreview = (TextView) findViewById(R.id.preview); mPreview.setText(r.getText(R.string.font_size_preview_text)); Button save = (Button) findViewById(R.id.save); save.setText(r.getText(R.string.font_size_save)); save.setOnClickListener(this); mTextSizeTyped = new TypedValue(); TypedArray styledAttributes = obtainStyledAttributes(android.R.styleable.TextView); styledAttributes.getValue(android.R.styleable.TextView_textSize, mTextSizeTyped); DisplayMetrics metrics = getResources().getDisplayMetrics(); mDisplayMetrics = new DisplayMetrics(); mDisplayMetrics.density = metrics.density; mDisplayMetrics.heightPixels = metrics.heightPixels; mDisplayMetrics.scaledDensity = metrics.scaledDensity; mDisplayMetrics.widthPixels = metrics.widthPixels; mDisplayMetrics.xdpi = metrics.xdpi; mDisplayMetrics.ydpi = metrics.ydpi; styledAttributes.recycle(); } @Override public void onResume() { super.onResume(); final ContentResolver resolver = getContentResolver(); mFontScale = Settings.System.getFloat(resolver, Settings.System.FONT_SCALE, 1.0f); if (mFontScale < 1) { mFontSize.setSelection(0); } else if (mFontScale > 1) { mFontSize.setSelection(2); } else { mFontSize.setSelection(1); } updateFontScale(); } private void updateFontScale() { mDisplayMetrics.scaledDensity = mDisplayMetrics.density * mFontScale; float size = mTextSizeTyped.getDimension(mDisplayMetrics); mPreview.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); } public void onClick(View v) { final ContentResolver resolver = getContentResolver(); Settings.System.putFloat(resolver, Settings.System.FONT_SCALE, mFontScale); finish(); } private Spinner.OnItemSelectedListener mFontSizeChanged = new Spinner.OnItemSelectedListener() { public void onItemSelected(android.widget.AdapterView av, View v, int position, long id) { if (position == 0) { mFontScale = .75f; } else if (position == 2) { mFontScale = 1.25f; } else { mFontScale = 1.0f; } updateFontScale(); } public void onNothingSelected(android.widget.AdapterView av) { } }; private Spinner mFontSize; private TextView mPreview; private TypedValue mTextSizeTyped; private DisplayMetrics mDisplayMetrics; private float mFontScale = 1.0f; }