/* * Copyright 2015 Hippo Seven * * 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.hippo.nimingban; import android.app.Activity; import android.support.annotation.NonNull; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import com.hippo.nimingban.widget.GuideView; import com.hippo.yorozuya.ViewUtils; public class GuideHelper { private static ViewGroup getParent(Activity activity) { ViewGroup parent = (ViewGroup) activity.getWindow().getDecorView(); View view = ViewUtils.getChild(parent, android.R.id.content); if (view instanceof ViewGroup) { parent = (ViewGroup) view; } return parent; } public static class Builder { private Activity mActivity; private int mPadding; private int mPaddingTop; private int mPaddingBottom; private int mColor; @GuideView.MessagePosition private int mMessagePosition = Gravity.TOP; private int mBackgroundColor; private CharSequence mMessage; private CharSequence mButton; private View.OnClickListener mOnDissmisListener; public Builder(@NonNull Activity activity) { mActivity = activity; } public Builder setPadding(int padding) { mPadding = padding; mPaddingTop = padding; mPaddingBottom = padding; return this; } public Builder setPaddingTop(int paddingTop) { mPaddingTop = paddingTop; return this; } public Builder setPaddingBottom(int paddingTop) { mPaddingBottom = paddingTop; return this; } public Builder setColor(int color) { mColor = color; return this; } public Builder setBackgroundColor(int backgroundColor) { mBackgroundColor = backgroundColor; return this; } public Builder setMessagePosition(@GuideView.MessagePosition int position) { mMessagePosition = position; return this; } public Builder setMessage(CharSequence text) { mMessage = text; return this; } public Builder setButton(CharSequence text) { mButton = text; return this; } public Builder setOnDissmisListener(View.OnClickListener listener) { mOnDissmisListener = listener; return this; } public void show() { ViewGroup parent = getParent(mActivity); GuideView guideView = new GuideView(mActivity); guideView.setColor(mColor); guideView.setPadding(mPadding, mPaddingTop, mPadding, mPaddingBottom); guideView.setBackgroundColor(mBackgroundColor); guideView.setMessagePosition(mMessagePosition); guideView.setMessage(mMessage); guideView.setButton(mButton); guideView.setOnDissmisListener(mOnDissmisListener); parent.addView(guideView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } } }