package ren.solid.library.activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentManager;
import android.support.v7.view.menu.MenuBuilder;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;
import java.lang.reflect.Method;
import ren.solid.library.R;
import ren.solid.library.SolidApplication;
import ren.solid.library.activity.base.BaseActivity;
import ren.solid.library.fragment.WebViewFragment;
import ren.solid.library.utils.ClipboardUtils;
import ren.solid.library.utils.SystemShareUtils;
/**
* Created by _SOLID
* Date:2016/4/19
* Time:13:03
*/
public class WebViewActivity extends BaseActivity {
public static String WEB_URL = "webViewUrl";
public static String TITLE = "webViewTitle";
private Toolbar mToolbar;
private String mUrl;
private String mTitle;
private FragmentManager mFragmentManager;
private WebViewFragment mWebViewFragment;
private TextSwitcher mTextSwitcher;
public static void start(Context context, String title, String url) {
Intent intent = new Intent(context, WebViewActivity.class);
intent.putExtra(WebViewActivity.WEB_URL, url);
intent.putExtra(WebViewActivity.TITLE, title);
context.startActivity(intent);
}
@Override
protected int setLayoutResourceID() {
return R.layout.activity_webview;
}
@Override
protected void init(Bundle savedInstanceState) {
mUrl = getIntent().getExtras().getString(WEB_URL);
mTitle = getIntent().getExtras().getString(TITLE);
mFragmentManager = getSupportFragmentManager();
}
@Override
protected void setUpView() {
//设置Toolbar
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);//决定左上角的图标是否可以点击
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//决定左上角图标的右侧是否有向左的小箭头
getSupportActionBar().setDisplayShowTitleEnabled(false);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
mTextSwitcher = $(R.id.textSwitcher);
mTextSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@SuppressWarnings("deprecation")
@Override
public View makeView() {
Context context = WebViewActivity.this;
TextView textView = new TextView(context);
textView.setTextAppearance(context, R.style.WebTitle);
textView.setSingleLine(true);
textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
v.setSelected(!v.isSelected());
}
});
return textView;
}
});
mTextSwitcher.setInAnimation(this, android.R.anim.fade_in);
mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out);
mTextSwitcher.setText(mTitle);
mTextSwitcher.setSelected(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_webview_toolbar, menu);
return true;
}
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
if (menu != null) {
if (menu.getClass() == MenuBuilder.class) {
try {
Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onPrepareOptionsPanel(view, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_copy) {
ClipboardUtils.setText(SolidApplication.getInstance(), mUrl);
Snackbar.make(mToolbar, "已复制到剪切板", Snackbar.LENGTH_SHORT).show();
return true;
} else if (id == R.id.action_share) {
SystemShareUtils.shareText(this, "【" + mTitle + "】" + mUrl);
} else if (id == R.id.action_browser) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.parse(mUrl));
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
@Override
protected void setUpData() {
mWebViewFragment = WebViewFragment.newInstance(mUrl);
mFragmentManager.beginTransaction().replace(R.id.fl_content, mWebViewFragment).commit();
}
@Override
public void onBackPressed() {
if (mWebViewFragment.canGoBack()) {
mWebViewFragment.goBack();
} else {
finish();
}
}
}