视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
解析原生与html之间进行的一些关联
2020-11-27 15:33:38 责编:小采
文档


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(); 
 } 
 }
 }

下载本文
显示全文
专题