Add: Sample Script Tab, EMCAScript Guide

This commit is contained in:
hyb1996
2017-03-14 16:59:45 +08:00
parent e81b661974
commit 85affed538
129 changed files with 7046 additions and 297 deletions

View File

@@ -1,16 +1,24 @@
package com.stardust.widget;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.commonmark.ext.heading.anchor.HeadingAnchorExtension;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
import java.util.Collection;
import java.util.Collections;
/**
* Created by Stardust on 2017/3/5.
*/
@@ -18,7 +26,11 @@ import org.commonmark.renderer.html.HtmlRenderer;
public class CommonMarkdownView extends WebView {
private Parser mParser = Parser.builder().build();
private HtmlRenderer mHtmlRender = HtmlRenderer.builder().build();
private HtmlRenderer mHtmlRender = HtmlRenderer.builder()
.extensions(Collections.singleton(new HeadingAnchorExtension.Builder().build()))
.build();
private String mMarkdownHtml;
public CommonMarkdownView(Context context) {
super(context);
@@ -41,16 +53,35 @@ public class CommonMarkdownView extends WebView {
public void onPageFinished(WebView view, String url) {
loadUrl("javascript:document.body.style.margin=\"12%\"; void 0");
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
getContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(request.getUrl()));
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
getContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)));
return true;
}
});
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CommonMarkdownView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public void loadMarkdown(String markdown) {
String html = renderMarkdown(markdown);
mMarkdownHtml = renderMarkdown(markdown);
loadHtml(mMarkdownHtml);
}
private void loadHtml(String html) {
loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
}
@@ -66,4 +97,11 @@ public class CommonMarkdownView extends WebView {
private void setText(String text) {
loadDataWithBaseURL(null, text, "text/plain", "utf-8", null);
}
}
public void goBack() {
super.goBack();
if (!canGoBack() && mMarkdownHtml != null) {
loadHtml(mMarkdownHtml);
}
}
}

View File

@@ -0,0 +1,97 @@
package com.stardust.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import com.stardust.scriptdroid.R;
/**
* Created by Stardust on 2017/3/10.
*/
public class LevelBeamView extends View {
private static final String TAG = "LevelBeamView";
private static final int[] colors = {
0xff1abc9c,
0xff3498db,
0xffe67e22,
0xff8e44ad,
0xfff1c40f,
0xff2ecc71,
};
private int mLevel;
private int mPaddingLeft, mPaddingRight;
private int mLinesWidth;
private int mLinesOffset;
private Paint mLinePaint;
public LevelBeamView(Context context) {
super(context);
init();
}
public LevelBeamView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public LevelBeamView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public void setLevel(int level) {
mLevel = level;
requestLayout();
}
private void init() {
setWillNotDraw(false);
mPaddingLeft = (int) getResources().getDimension(R.dimen.level_beam_view_padding_left);
mPaddingRight = (int) getResources().getDimension(R.dimen.level_beam_view_padding_right);
mLinesWidth = (int) getResources().getDimension(R.dimen.level_beam_view_line_width);
mLinesOffset = (int) getResources().getDimension(R.dimen.level_beam_view_line_offset);
mLinePaint = new Paint();
mLinePaint.setAntiAlias(true);
mLinePaint.setColor(Color.RED);
mLinePaint.setStyle(Paint.Style.FILL);
mLinePaint.setStrokeWidth(mLinesWidth);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = mPaddingLeft + mPaddingRight + (mLevel + 1) * (mLinesWidth + mLinesOffset);
int height = View.MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
@Override
protected void onDraw(Canvas canvas) {
Log.i(TAG, "onDraw");
super.onDraw(canvas);
for (int lvl = 0; lvl <= mLevel; lvl++) {
float LINE_X = mPaddingLeft + lvl * mLinesWidth;
if (lvl >= 1) {
LINE_X += lvl * mLinesOffset;
}
mLinePaint.setColor(getColorForLevel(lvl));
canvas.drawLine(LINE_X, 0, LINE_X, canvas.getHeight(), mLinePaint);
}
}
private int getColorForLevel(int level) {
return colors[level % colors.length];
}
}

View File

@@ -0,0 +1,35 @@
package com.stardust.widget;
import android.support.v7.widget.RecyclerView;
/**
* Created by Stardust on 2017/3/14.
*/
public class SimpleAdapterDataObserver extends RecyclerView.AdapterDataObserver {
public void onChanged() {
onSomethingChanged();
}
public void onItemRangeChanged(int positionStart, int itemCount) {
onSomethingChanged();
}
public void onItemRangeInserted(int positionStart, int itemCount) {
onSomethingChanged();
}
public void onItemRangeRemoved(int positionStart, int itemCount) {
onSomethingChanged();
}
public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
onSomethingChanged();
}
public void onSomethingChanged() {
}
}