package com.fourlastor.dante; import android.graphics.Bitmap; import android.graphics.Typeface; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Spanned; import android.widget.TextView; import com.fourlastor.dante.html.FlavoredHtml; import com.fourlastor.dante.html.ImgLoader; import com.squareup.picasso.Picasso; import java.io.IOException; public class MainActivity extends AppCompatActivity { private TextView html; private FlavoredHtml flavoredHtml; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); html = ((TextView) findViewById(R.id.html)); flavoredHtml = new FlavoredHtml.Builder(this) .newLine("p", "h1", "h2", "h3", "h4", "h5", "h6", "li") .textAppearance(R.style.headline, "h1") .textAppearance(R.style.title, "h2") .textAppearance(R.style.subhead, "h3") .textAppearance(R.style.body, "p", "li") .style(Typeface.BOLD, "b", "strong") .style(Typeface.ITALIC, "i", "em") .bullet(15, "li") .img(new ImgLoader.BitmapLoader(getResources()) { @Override protected Bitmap loadBitmap(String src) { try { return Picasso.with(MainActivity.this) .load(src) .get(); } catch (IOException e) { throw new RuntimeException("Whoops!"); } } }) .build(); } @Override protected void onStart() { super.onStart(); final String rawHtml = "<h1>HTML Ipsum Presents</h1>\n" + "\n" + "<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href=\"#\">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>\n" + "\n" + "<h2>Header Level 2</h2>\n" + "\n" + "<ol>\n" + " <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>\n" + " <li>Aliquam tincidunt mauris eu risus.</li>\n" + "</ol>\n" + "\n" + "<blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>\n" + "\n" + "<p><img src='https://github.com/fourlastor/dante/raw/master/images/screencast.gif' /></p>" + "\n" + "<h3>Header Level 3</h3>\n" + "\n" + "<ul>\n" + " <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>\n" + " <li>Aliquam tincidunt mauris eu risus.</li>\n" + "</ul>"; // This is an example. Use something that you can control better than AsyncTask for your production code. new AsyncTask<Void, Void, Spanned>() { @Override protected Spanned doInBackground(Void... params) { return flavoredHtml.parse(rawHtml); } @Override protected void onPostExecute(Spanned spanned) { html.setText(spanned); } }.execute(); } }