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

5268f80b9b1e01f982625ef6fac83ca1.png

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 来实现部分字体颜色的改变"));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

document.write("Hello World!")

function changeColor(color){ document.body.style.background = color; }

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)HTML5CallAndroidMethod

2 )androidclass 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 来实现部分字体颜色的改变"));或者

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

document.write("Hello World!")

function changeColor(color){ document.body.style.background = color; }

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)HTML5CallAndroidMethod

2 )androidclass 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();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值