android Launcher研究(一)


これは冒頭で、今からLauncherを研究して、確かに多くの内容が自分でまだよく知らないことを発見して、ここですべての私が分からないあるいは役に立つ知識点を記録して、後で熟知して振り返ることができます.転載が多いかもしれませんが、原作者に感謝します!
昨日は実はばらばらな知識点がありましたが、収集していません.ここで私の研究会は最後に総括します.前の文章はすべていくつかの知識点を携帯電話につけて、とてもシステム的ではないかもしれません.OK今日発見した最初の知識点:
1、SpannableStringBuilder
EditText:
通常は文字を表示するために使用されますが、QQで表情画像を使用したり、必要な文字をハイライト表示したりするなど、文字に画像を混ぜる必要がある場合もあります.androidでもどうすればいいのでしょうか.androidの中にandroidがあるのを覚えています.textパッケージは、テキストに対する強力な処理機能を提供します.画像を追加するには、主にSpannablesStringとImageSpanクラスを使用します.
     Drawable drawable = getResources().getDrawable(id);  
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
        //       ,[smile]           
        SpannableString spannable = new SpannableString(getText().toString()+"[smile]");  
        //              ImageSpan  
        ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);  
        //    ,   2  3                   (start end)  
       //              ,[5,12)   5 12,  5    12  
        spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);    
        setText(spannable);  

必要なテキストをハイライト表示:
 
public void highlight(int start,int end){  
        SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());//         
        ForegroundColorSpan span=new ForegroundColorSpan(Color.RED);  
        spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        setText(spannable);  
    }  

 
下線を引く:
 
public void underline(int start,int end){  
        SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());  
        CharacterStyle span=new UnderlineSpan();  
        spannable.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        setText(spannable);  
    }  

 
組み合わせ運用:
 
SpannableStringBuilder spannable=new SpannableStringBuilder(getText().toString());  
        CharacterStyle span_1=new StyleSpan(android.graphics.Typeface.ITALIC);  
        CharacterStyle span_2=new ForegroundColorSpan(Color.RED);  
        spannable.setSpan(span_1, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        spannable.setSpan(span_2, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        setText(spannable);  

 
ケース:改行文字列は、この方法で2色表示できます.
 
    /** 
     *   
2 * @param text * @param color1 * @param color2 * @return */ public SpannableStringBuilder highlight(String text,int color1,int color2,int fontSize){ SpannableStringBuilder spannable=new SpannableStringBuilder(text);// CharacterStyle span_0=null,span_1=null,span_2; int end=text.indexOf("
"); if(end==-1){// span_0=new ForegroundColorSpan(color1); spannable.setSpan(span_0, 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); }else{ span_0=new ForegroundColorSpan(color1); span_1=new ForegroundColorSpan(color2); spannable.setSpan(span_0, 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(span_1, end+1, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span_2=new AbsoluteSizeSpan(fontSize);// spannable.setSpan(span_2, end+1, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } return spannable; }

以上が実際にはHtmlである.fromHtml(html)のコード実装形式.
=============================================================================
TextView:(メソッドはEditViewと似ています)
TextViewのキーワードをハイライト表示するにはどうすればいいですか? 

   
   
   
   
/**
*
*
@param target
*/
public void highlight(String target){
String temp
= getText().toString();
SpannableStringBuilder spannable
= new SpannableStringBuilder(temp);
CharacterStyle span
= null ;

Pattern p
= Pattern.compile(target);
Matcher m
= p.matcher(temp);
while (m.find()) {
span
= new ForegroundColorSpan(Color.RED); //
//span = new ImageSpan(drawable,ImageSpan.XX);//
spannable.setSpan(span, m.start(), m.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
setText(spannable);
}
2、 AppWidget, , widget
, , , !