Add: Sample Script Tab, EMCAScript Guide
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
97
app/src/main/java/com/stardust/widget/LevelBeamView.java
Normal file
97
app/src/main/java/com/stardust/widget/LevelBeamView.java
Normal 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];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user