| /* |
| * 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. |
| */ |
| |
| package com.example.wallpapertest; |
| |
| import android.app.Activity; |
| import android.app.WallpaperManager; |
| import android.content.Context; |
| import android.graphics.Point; |
| import android.graphics.Rect; |
| import android.os.Bundle; |
| import android.os.IBinder; |
| import android.text.Editable; |
| import android.text.TextUtils; |
| import android.text.TextWatcher; |
| import android.util.Log; |
| import android.view.WindowManager; |
| import android.widget.TextView; |
| |
| public class MainActivity extends Activity { |
| private static final String TAG = "MainActivity"; |
| |
| WallpaperManager mWallpaperManager; |
| WindowManager mWindowManager; |
| |
| TextView mDimenWidthView; |
| TextView mDimenHeightView; |
| |
| TextView mWallOffXView; |
| TextView mWallOffYView; |
| |
| TextView mPaddingLeftView; |
| TextView mPaddingRightView; |
| TextView mPaddingTopView; |
| TextView mPaddingBottomView; |
| |
| TextView mDispOffXView; |
| TextView mDispOffYView; |
| |
| @Override |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| setContentView(R.layout.activity_main); |
| |
| mWallpaperManager = (WallpaperManager)getSystemService(Context.WALLPAPER_SERVICE); |
| mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE); |
| |
| mDimenWidthView = (TextView) findViewById(R.id.dimen_width); |
| mDimenWidthView.addTextChangedListener(mTextWatcher); |
| mDimenHeightView = (TextView) findViewById(R.id.dimen_height); |
| mDimenHeightView.addTextChangedListener(mTextWatcher); |
| |
| mWallOffXView = (TextView) findViewById(R.id.walloff_x); |
| mWallOffXView.addTextChangedListener(mTextWatcher); |
| mWallOffYView = (TextView) findViewById(R.id.walloff_y); |
| mWallOffYView.addTextChangedListener(mTextWatcher); |
| |
| mPaddingLeftView = (TextView) findViewById(R.id.padding_left); |
| mPaddingLeftView.addTextChangedListener(mTextWatcher); |
| mPaddingRightView = (TextView) findViewById(R.id.padding_right); |
| mPaddingRightView.addTextChangedListener(mTextWatcher); |
| mPaddingTopView = (TextView) findViewById(R.id.padding_top); |
| mPaddingTopView.addTextChangedListener(mTextWatcher); |
| mPaddingBottomView = (TextView) findViewById(R.id.padding_bottom); |
| mPaddingBottomView.addTextChangedListener(mTextWatcher); |
| |
| mDispOffXView = (TextView) findViewById(R.id.dispoff_x); |
| mDispOffXView.addTextChangedListener(mTextWatcher); |
| mDispOffYView = (TextView) findViewById(R.id.dispoff_y); |
| mDispOffYView.addTextChangedListener(mTextWatcher); |
| |
| updateDimens(); |
| updateWallOff(); |
| updatePadding(); |
| updateDispOff(); |
| } |
| |
| private int loadPropIntText(TextView view, int baseVal) { |
| String str = view.getText().toString(); |
| if (str != null && !TextUtils.isEmpty(str)) { |
| try { |
| float fval = Float.parseFloat(str); |
| return (int)(fval*baseVal); |
| } catch (NumberFormatException e) { |
| Log.i(TAG, "Bad number: " + str, e); |
| } |
| } |
| return baseVal; |
| } |
| |
| private float loadFloatText(TextView view) { |
| String str = view.getText().toString(); |
| if (str != null && !TextUtils.isEmpty(str)) { |
| try { |
| return Float.parseFloat(str); |
| } catch (NumberFormatException e) { |
| Log.i(TAG, "Bad number: " + str, e); |
| } |
| } |
| return 0; |
| } |
| |
| private int loadIntText(TextView view) { |
| String str = view.getText().toString(); |
| if (str != null && !TextUtils.isEmpty(str)) { |
| try { |
| return Integer.parseInt(str); |
| } catch (NumberFormatException e) { |
| Log.i(TAG, "Bad number: " + str, e); |
| } |
| } |
| return 0; |
| } |
| |
| public void updateDimens() { |
| Point minDims = new Point(); |
| Point maxDims = new Point(); |
| mWindowManager.getDefaultDisplay().getCurrentSizeRange(minDims, maxDims); |
| mWallpaperManager.suggestDesiredDimensions( |
| loadPropIntText(mDimenWidthView, maxDims.x), |
| loadPropIntText(mDimenHeightView, maxDims.y)); |
| } |
| |
| public void updateWallOff() { |
| IBinder token = getWindow().getDecorView().getWindowToken(); |
| if (token != null) { |
| mWallpaperManager.setWallpaperOffsets(token, loadFloatText(mWallOffXView), |
| loadFloatText(mWallOffYView)); |
| } |
| } |
| |
| public void updatePadding() { |
| Rect padding = new Rect(); |
| padding.left = loadIntText(mPaddingLeftView); |
| padding.top = loadIntText(mPaddingTopView); |
| padding.right = loadIntText(mPaddingRightView); |
| padding.bottom = loadIntText(mPaddingBottomView); |
| mWallpaperManager.setDisplayPadding(padding); |
| } |
| |
| public void updateDispOff() { |
| IBinder token = getWindow().getDecorView().getWindowToken(); |
| if (token != null) { |
| mWallpaperManager.setDisplayOffset(token, loadIntText(mDispOffXView), |
| loadIntText(mDispOffYView)); |
| } |
| } |
| |
| final TextWatcher mTextWatcher = new TextWatcher() { |
| @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
| } |
| |
| @Override public void onTextChanged(CharSequence s, int start, int before, int count) { |
| updateDimens(); |
| updateWallOff(); |
| updatePadding(); |
| updateDispOff(); |
| } |
| |
| @Override public void afterTextChanged(Editable s) { |
| } |
| }; |
| } |