/* * Copyright (c) 2015 [1076559197@qq.com | tchen0707@gmail.com] * * 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.youku.player.plugin; import android.content.Context; import android.content.res.Resources; import android.os.Handler; import android.text.Html; import android.text.TextUtils; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; import com.youku.player.base.GoplayException; import com.youku.player.base.YoukuBasePlayerActivity; import com.youku.player.ui.R; import com.youku.player.ui.interf.IMediaPlayerDelegate; public class PluginPayTip extends PluginOverlay { IMediaPlayerDelegate mediaPlayerDelegate; YoukuBasePlayerActivity mActivity; LayoutInflater mLayoutInflater; View mContainerView; private Button mCloseButton; TextView mTipTextView; private RelativeLayout mPayTipLayout; private Resources mResources; Button mArrowButton; private String mVid; private TipState mState = TipState.SHOW_FULL; protected boolean isHide; private boolean isRealStart; public PluginPayTip(YoukuBasePlayerActivity context, IMediaPlayerDelegate mediaPlayerDelegate) { super(context, mediaPlayerDelegate); this.mediaPlayerDelegate = mediaPlayerDelegate; mActivity = context; mResources = context.getResources(); mLayoutInflater = LayoutInflater.from(context); init(context); } private Handler mHandler = new Handler(); protected void init(Context context) { mContainerView = mLayoutInflater.inflate(R.layout.yp_plugin_paytip, null); addView(mContainerView); findView(); setFull(); } private void setFull() { mTipTextView .setText(Html .fromHtml("您可以免费试看前10分钟<br><font color=#ff6d02>立即购买</font>观看完整版")); mTipTextView.getLayoutParams().width = (int) mResources .getDimension(R.dimen.paytip_full_tip_width); mTipTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mResources.getDimension(R.dimen.paytip_full_textsize)); mPayTipLayout.getLayoutParams().height = (int) mResources .getDimension(R.dimen.paytip_full_height); } public void findView() { mCloseButton = (Button) mContainerView.findViewById(R.id.paytip_close); mTipTextView = (TextView) mContainerView.findViewById(R.id.paytip_bt); mPayTipLayout = (RelativeLayout) mContainerView .findViewById(R.id.paytip_layout); mArrowButton = (Button) mContainerView.findViewById(R.id.paytip_arrow); mCloseButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onCloseClick(); mState = TipState.CLOSED; close(null); } }); OnClickListener okClickLisher = new OnClickListener() { @Override public void onClick(View v) { onOkClick(); mState = TipState.CLOSED; close(null); } }; mTipTextView.setOnClickListener(okClickLisher); mArrowButton.setOnClickListener(okClickLisher); mContainerView.setVisibility(View.GONE); } protected void onCloseClick() { } @Override public void onBufferingUpdateListener(int percent) { // TODO Auto-generated method stub } protected void onOkClick() { mActivity.onPayClick(); } @Override public void onCompletionListener() { // TODO Auto-generated method stub } @Override public boolean onErrorListener(int what, int extra) { if (!mActivity.isFinishing()) mActivity.runOnUiThread(new Runnable() { @Override public void run() { mState = TipState.SHOW_FULL; mContainerView.setVisibility(View.GONE); } }); return false; } @Override public void OnPreparedListener() { } @Override public void OnSeekCompleteListener() { } @Override public void OnVideoSizeChangedListener(int width, int height) { // TODO Auto-generated method stub } @Override public void OnTimeoutListener() { // TODO Auto-generated method stub } @Override public void OnCurrentPositionChangeListener(int currentPosition) { // TODO Auto-generated method stub } @Override public void onLoadedListener() { // TODO Auto-generated method stub } @Override public void onLoadingListener() { // TODO Auto-generated method stub } @Override public void onNotifyChangeVideoQuality() { // TODO Auto-generated method stub } @Override public void onRealVideoStarted() { // TODO Auto-generated method stub } @Override public void onUp() { // TODO Auto-generated method stub } @Override public void onDown() { // TODO Auto-generated method stub } @Override public void onClearUpDownFav() { // TODO Auto-generated method stub } @Override public void onFavor() { // TODO Auto-generated method stub } @Override public void onUnFavor() { // TODO Auto-generated method stub } @Override public void newVideo() { // TODO Auto-generated method stub } @Override public void onVolumnUp() { // TODO Auto-generated method stub } @Override public void onVolumnDown() { // TODO Auto-generated method stub } @Override public void onMute(boolean mute) { // TODO Auto-generated method stub } @Override public void onStart() { // TODO Auto-generated method stub } @Override public void onPause() { // TODO Auto-generated method stub } @Override public void onVideoChange() { // TODO Auto-generated method stub } @Override public void onVideoInfoGetting() { // TODO Auto-generated method stub } @Override public void onVideoInfoGetted() { // TODO Auto-generated method stub } @Override public void onRealVideoStart() { if (mActivity.isFinishing()) return; isRealStart = true; showProperTip(); } private void showProperTip() { if (mediaPlayerDelegate == null || mediaPlayerDelegate.videoInfo == null || mediaPlayerDelegate.videoInfo.getLookTen() != 1 || isHide || !isRealStart) return; mContainerView.setVisibility(View.GONE); if (!TextUtils.isEmpty(mVid) && mVid.equals(mediaPlayerDelegate.videoInfo.getVid())) { switch (mState) { case CLOSED: return; case SHOW_FULL: setFull(); break; case SHOW_SIMPLE: setSample(); break; default: break; } } else mState = TipState.SHOW_FULL; mVid = mediaPlayerDelegate.videoInfo.getVid(); show(); if (mState == TipState.SHOW_FULL) { mHandler.removeCallbacksAndMessages(null); mHandler.postDelayed(new Runnable() { @Override public void run() { if (mActivity.isFinishing() || mContainerView.getVisibility() != View.VISIBLE) return; mState = TipState.CLOSED; close(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { if (mActivity.isFinishing() || isHide) return; setSample(); show(); } }); } }, 5000); } } private void setSample() { mState = TipState.SHOW_SIMPLE; mTipTextView.setText(Html.fromHtml("<font color=#ff6d02>立即购买</font>")); mTipTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mResources.getDimension(R.dimen.paytip_small_textsize)); mTipTextView.getLayoutParams().width = (int) mResources .getDimension(R.dimen.paytip_small_tip_width); mPayTipLayout.getLayoutParams().height = (int) mResources .getDimension(R.dimen.paytip_close_height); } public void show() { mContainerView.setVisibility(View.VISIBLE); Animation animation = AnimationUtils.loadAnimation(mActivity, R.anim.paytip_right_in); mPayTipLayout.startAnimation(animation); } public void close(AnimationListener listener) { Animation animation = AnimationUtils.loadAnimation(mActivity, R.anim.paytip_right_out); if (listener != null) animation.setAnimationListener(listener); mContainerView.startAnimation(animation); mContainerView.setVisibility(View.INVISIBLE); } @Override public void onPlayNoRightVideo(GoplayException e) { // TODO Auto-generated method stub } @Override public void onPlayReleateNoRightVideo() { // TODO Auto-generated method stub } @Override public void onADplaying() { // TODO Auto-generated method stub } @Override public void onVideoInfoGetFail(boolean needRetry) { // TODO Auto-generated method stub } @Override public void setVisible(boolean visible) { if (mediaPlayerDelegate.isFullScreen) { ((RelativeLayout.LayoutParams) mPayTipLayout.getLayoutParams()) .setMargins(0, 0, 0, (int) mResources .getDimension(R.dimen.paytip_full_margin_bottom)); } else { ((RelativeLayout.LayoutParams) mPayTipLayout.getLayoutParams()) .setMargins(0, 0, 0, (int) mResources .getDimension(R.dimen.paytip_small_margin_bottom)); } } @Override public void back() { // TODO Auto-generated method stub } @Override public void onRelease() { mContainerView.setVisibility(View.INVISIBLE); isHide = false; isRealStart = false; } @Override public boolean isShowing() { return mContainerView.getVisibility() == View.VISIBLE; } private static enum TipState { SHOW_FULL, SHOW_SIMPLE, CLOSED } public void hide() { isHide = true; if (isShowing()) close(null); } public void unHide() { isHide = false; showProperTip(); } }