解析原生与html之间进行的一些关联
1.Android中设置部分字体的颜色改变,并且能点击
1, 使用SpannableStringBuilder来实现
//1,使用 SpannableStringBuilder , 参数中的数字表示修改的片段的起始位置和结束位置 TextView tv_1 = (TextView) findViewById(R.id.textView_1); String str_1 = "使用 SpannableStringBuilder 来实现部分字体颜色的改变"; SpannableStringBuilder ssb = new SpannableStringBuilder(str_1); ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, 10,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); ssb.setSpan(new ForegroundColorSpan(Color.YELLOW), 12, 22,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); ssb.setSpan(new ForegroundColorSpan(Color.GREEN), 23, str_1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); tv_1.setText(ssb);
登录后复制
登录后复制
2, 使用 html 来实现
//2,使用html来修改部分字体的颜色 TextView tv_2 = (TextView) findViewById(R.id.textView_2); String str_2 = "使用 Html 来实现部分字体颜色的改变"; tv_2.setText(Html.fromHtml("使用 Html <font color = blue> 来实现部分字体颜色的改变</font>"));
登录后复制
登录后复制
html = "<html><body>" + "<p><font color=\"#FFBF00\"> ② </p>" + "<p><font color=\"#CE00F7\">城郊 " + "</p>" + "</body></html>"; _Holder.station_change.setText(Html.fromHtml(html));
登录后复制
3 , 使用SpannableStringBuilder来实现,或者 SpannableString来实现部分字体的颜色的改变,并且能点击,这里用到了ClickableSpan
//3,实现部分字体颜色的改变,并能点击 TextView tv_3 = (TextView) findViewById(R.id.textView_3); String str_3 = "实现部分字体颜"; String str_4 = "色的改变并且能点击"; //这里无论是使用 SpannableString 还是 SpannableStringBuilder 都一样 SpannableString ss = new SpannableString(str_4); // SpannableStringBuilder s = new SpannableStringBuilder(str_4); MyClickableSpan clickSpan = new MyClickableSpan(this, str_4); ss.setSpan(clickSpan, 0, str_4.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv_3.setText(str_3); tv_3.append(ss); //必须加这一句,否则就无法被点击 tv_3.setMovementMethod(LinkMovementMethod.getInstance());
登录后复制
登录后复制
/** * 这个类 实际上和第一种改变颜色的方法差不多,只不过 那是个专门改变颜色的Span,这是个专门负责点击处理的Span * @author Administrator */ class MyClickableSpan extends ClickableSpan{ private Context context; private String text; public MyClickableSpan(Context context,String text) { this.context = context; this.text = text; } //在这里设置字体的大小,等待各种属性 public void updateDrawState(TextPaint ds) { ds.setColor(Color.RED); } @Override public void onClick(View widget) { Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); } }
登录后复制
登录后复制
2.Android原生代码与HTML5的交互
1.原生代码调用HTML5页面方法
例如,app要调用HTML5页面的changeColor(color)的方法,来改变HTML5页面的颜色
1)HTML5
<script type="text/javascript"> document.write("Hello World!") function changeColor(color){ document.body.style.background = color; } </script>
登录后复制
登录后复制
2)Android
//开启JavaScript支持 wvMain.getSettings().setJavaScriptEnabled(true); //放在assets的html需加上android_asset/ ;也可以用网络上的文件 wvMain.loadUrl("file:///android_asset/show.html"); // 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法 wvMain.addJavascriptInterface(new JSInterface1(),"baobao"); btnOne.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String color = "#cccccc"; wvMain.loadUrl("javascript: changeColor('"+color+"')"); }});
登录后复制
登录后复制
2.HTLM5页面调用原生方法
例如,点击HTML5页面的文字,回调原生代码中的callAndroidMethod方法
1)HTML5
<a onClick="baobao.callAndroidMethod(100,100,'ccc',true)">CallAndroidMethod</a>
登录后复制
登录后复制
2 )android
class JSInterface1 { //JavaScript调用此方法 @JavascriptInterface public void callAndroidMethod(int a,float b, String c,boolean d){ if(d){ String strMessage = "a+b+c="+a+b+c; new AlertDialog.Builder(MainActivity.this).setTitle("title").setMessage(strMessage).show(); } } }
登录后复制
登录后复制
1.Android中设置部分字体的颜色改变,并且能点击
1, 使用SpannableStringBuilder来实现
//1,使用 SpannableStringBuilder , 参数中的数字表示修改的片段的起始位置和结束位置 TextView tv_1 = (TextView) findViewById(R.id.textView_1); String str_1 = "使用 SpannableStringBuilder 来实现部分字体颜色的改变"; SpannableStringBuilder ssb = new SpannableStringBuilder(str_1); ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, 10,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); ssb.setSpan(new ForegroundColorSpan(Color.YELLOW), 12, 22,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); ssb.setSpan(new ForegroundColorSpan(Color.GREEN), 23, str_1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); tv_1.setText(ssb);
登录后复制
登录后复制
2, 使用 html 来实现
//2,使用html来修改部分字体的颜色 TextView tv_2 = (TextView) findViewById(R.id.textView_2); String str_2 = "使用 Html 来实现部分字体颜色的改变"; tv_2.setText(Html.fromHtml("使用 Html <font color = blue> 来实现部分字体颜色的改变</font>"));
登录后复制
登录后复制
或者 html = "<html><body>" + "<p><font color=\"#FFBF00\"> ② </p>" + "<p><font color=\"#CE00F7\">城郊 " + "</p>" + "</body></html>"; _Holder.station_change.setText(Html.fromHtml(html));
登录后复制
3 , 使用SpannableStringBuilder来实现,或者 SpannableString来实现部分字体的颜色的改变,并且能点击,这里用到了ClickableSpan
//3,实现部分字体颜色的改变,并能点击 TextView tv_3 = (TextView) findViewById(R.id.textView_3); String str_3 = "实现部分字体颜"; String str_4 = "色的改变并且能点击"; //这里无论是使用 SpannableString 还是 SpannableStringBuilder 都一样 SpannableString ss = new SpannableString(str_4); // SpannableStringBuilder s = new SpannableStringBuilder(str_4); MyClickableSpan clickSpan = new MyClickableSpan(this, str_4); ss.setSpan(clickSpan, 0, str_4.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv_3.setText(str_3); tv_3.append(ss); //必须加这一句,否则就无法被点击 tv_3.setMovementMethod(LinkMovementMethod.getInstance());
登录后复制
登录后复制
/** * 这个类 实际上和第一种改变颜色的方法差不多,只不过 那是个专门改变颜色的Span,这是个专门负责点击处理的Span * @author Administrator */ class MyClickableSpan extends ClickableSpan{ private Context context; private String text; public MyClickableSpan(Context context,String text) { this.context = context; this.text = text; } //在这里设置字体的大小,等待各种属性 public void updateDrawState(TextPaint ds) { ds.setColor(Color.RED); } @Override public void onClick(View widget) { Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); } }
登录后复制
登录后复制
2.Android原生代码与HTML5的交互
1.原生代码调用HTML5页面方法
例如,app要调用HTML5页面的changeColor(color)的方法,来改变HTML5页面的颜色
1)HTML5
<script type="text/javascript"> document.write("Hello World!") function changeColor(color){ document.body.style.background = color; } </script>
登录后复制
登录后复制
2)Android
//开启JavaScript支持 wvMain.getSettings().setJavaScriptEnabled(true); //放在assets的html需加上android_asset/ ;也可以用网络上的文件 wvMain.loadUrl("file:///android_asset/show.html"); // 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法 wvMain.addJavascriptInterface(new JSInterface1(),"baobao"); btnOne.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String color = "#cccccc"; wvMain.loadUrl("javascript: changeColor('"+color+"')"); }});
登录后复制
登录后复制
2.HTLM5页面调用原生方法
例如,点击HTML5页面的文字,回调原生代码中的callAndroidMethod方法
1)HTML5
<a onClick="baobao.callAndroidMethod(100,100,'ccc',true)">CallAndroidMethod</a>
登录后复制
登录后复制
2 )android
class JSInterface1 { //JavaScript调用此方法 @JavascriptInterface public void callAndroidMethod(int a,float b, String c,boolean d){ if(d){ String strMessage = "a+b+c="+a+b+c; new AlertDialog.Builder(MainActivity.this).setTitle("title").setMessage(strMessage).show(); } } }
登录后复制
登录后复制
以上是解析原生与html之间进行的一些关联的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
刺客信条阴影:贝壳谜语解决方案
1 个月前
By DDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
3 周前
By DDD
在哪里可以找到原子中的起重机控制钥匙卡
1 个月前
By DDD
如何修复KB5055523无法在Windows 11中安装?
2 周前
By DDD
Inzoi:如何申请学校和大学
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)