最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

解析原生与html之间进行的一些关联

来源:动视网 责编:小采 时间:2020-11-27 15:33:38
文档

解析原生与html之间进行的一些关联

解析原生与html之间进行的一些关联:1.Android中设置部分字体的颜色改变,并且能点击1, 使用SpannableStringBuilder来实现//1,使用 SpannableStringBuilder , 参数中的数字表示修改的片段的起始位置和结束位置 TextView tv_1 = (TextView) findViewById(R.i
推荐度:
导读解析原生与html之间进行的一些关联:1.Android中设置部分字体的颜色改变,并且能点击1, 使用SpannableStringBuilder来实现//1,使用 SpannableStringBuilder , 参数中的数字表示修改的片段的起始位置和结束位置 TextView tv_1 = (TextView) findViewById(R.i


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之间进行的一些关联

解析原生与html之间进行的一些关联:1.Android中设置部分字体的颜色改变,并且能点击1, 使用SpannableStringBuilder来实现//1,使用 SpannableStringBuilder , 参数中的数字表示修改的片段的起始位置和结束位置 TextView tv_1 = (TextView) findViewById(R.i
推荐度:
标签: 之间的 html html的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top