>  기사  >  웹 프론트엔드  >  네이티브와 HTML 간의 일부 연관성을 분석합니다.

네이티브와 HTML 간의 일부 연관성을 분석합니다.

零下一度
零下一度원래의
2017-04-27 11:55:351626검색

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

를 구현하고 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 페이지 메서드
예를 들어 앱은 HTML5 페이지의 색상을 변경하려면 HTML5 페이지의changeColor(color) 메서드를 호출해야 합니다

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(&#39;"+color+"&#39;)");    }});

2.HTLM5 페이지는 네이티브 메소드를 호출합니다

예를 들어 HTML5 페이지의 텍스트를 클릭하고 네이티브 코드에서 callAndroidMethod 메소드를 다시 호출합니다

1 ) HTML5

 <a onClick="baobao.callAndroidMethod(100,100,&#39;ccc&#39;,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 페이지 메서드를 호출합니다

예를 들어 앱은 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(&#39;"+color+"&#39;)");    }});

2.HTLM5 페이지는 기본 메서드를 호출합니다

예를 들어 다음을 클릭합니다. HTML5 페이지의 텍스트 및 네이티브 코드의 callAndroidMethod 메소드를 콜백


1) HTML5

 <a onClick="baobao.callAndroidMethod(100,100,&#39;ccc&#39;,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으로 문의하세요.