Import android. app. activity; import android. widget. imageview; import android. widget. relativelayout; import android. widget. textview; @ suppresswarnings ("UNUSED") public class syncstatuspanel extends relativelayout { Private class seticonuithread implements runnable { Private int image; Public seticonuithread (){ } Public void run (){ If (image! = 0 ){ Sourceiconview. setimageresource (image ); } Else { Sourceiconview. setimageresource (0 ); } } Public void seticon (INT image ){ This. Image = image; } } Private class setstatusiconuithread implements runnable { Private int image; Public setstatusiconuithread (){ } Public void run (){ If (image! = 0 ){ Statusiconview. setimageresource (image ); } Else { Statusiconview. setimageresource (0 ); } } Public void seticon (INT image ){ This. Image = image; } } Private class setstatusstringuithread implements runnable { Private string text; Public setstatusstringuithread (){ } Public void run (){ Statustextview. settext (text ); } Public void settext (string value ){ This. Text = value; } } Private class settitleuithread implements runnable { Private String title; Public settitleuithread (){ } Public void run (){ Titletextview. settext (title ); } Public void settitle (String title ){ This. Title = title; } } Protected static final int bottom_padding = 8; Private Static final int disabled_text_color = 0xff7f7f7f; Private Static final int enabled_text_color = 0xff000000; Protected static final int source_icon_left_padding = 4; Protected static final int source_icon_right_padding = 4; Private Static final int status_font_size = 12; Protected static final int status_icon_r_padding = 4; Protected static final int status_l_padding = 12; Private Static final int title_font_size = 20; Protected static final int title_l_padding = 5; Protected static final int top_padding = 8; Protected activity; Protected seticonuithread = new seticonuithread (); Protected setstatusiconuithread = new setstatusiconuithread (); Protected setstatusstringuithread = new setstatusstringuithread (); Protected settitleuithread = new settitleuithread (); Protected imageview sourceiconview; Protected imageview statusiconview; Protected textview statustextview; Protected textview titletextview; // ID of each element Protected final int d1 = 0x514001, D2 = 0x514002, D3 = 0x514003, D4 = 0x514004; Public syncstatuspanel (activity ){ Super (activity ); This. Activity = activity; Statusiconview = createstatusicon (activity ); Sourceiconview = createsourceicon (activity ); Titletextview = createtitletext (activity ); Statustextview = createstatustext (activity ); Relativelayout. layoutparams params1 = new relativelayout. layoutparams ( Layoutparams. wrap_content, Layoutparams. wrap_content ); Params1.addrule (relativelayout. center_vertical ); Params1.addrule (relativelayout. align_parent_left ); Addview (sourceiconview, params1 ); Relativelayout. layoutparams params2 = new relativelayout. layoutparams ( Layoutparams. wrap_content, Layoutparams. wrap_content ); Params2.addrule (relativelayout. center_vertical ); Params2.addrule (relativelayout. align_parent_right ); Addview (statusiconview, params2 ); Relativelayout. layoutparams params3 = new relativelayout. layoutparams ( Layoutparams. fill_parent, Layoutparams. wrap_content ); Params3 . Addrule (relativelayout. right_of, Sourceiconview. GETID ()); Params3.addrule (relativelayout. align_parent_top ); Params3.addrule (relativelayout. left_of, statusiconview. GETID ()); Addview (titletextview, params3 ); Relativelayout. layoutparams params4 = new relativelayout. layoutparams ( Layoutparams. fill_parent, Layoutparams. wrap_content ); Params4 . Addrule (relativelayout. right_of, Sourceiconview. GETID ()); Params4.addrule (relativelayout. below, titletextview. GETID ()); Params4.addrule (relativelayout. left_of, statusiconview. GETID ()); Addview (statustextview, params4 ); Setbackgroundresource (R. drawable. sync_status_panel ); } Protected int adaptsizetodensity (INT size ){ Return (INT) (size * getcontext (). getresources () . Getdisplaymetrics (). Density ); } Protected imageview createsourceicon (activity ){ Imageview sourceiconview = new imageview (activity ); Sourceiconview. setpadding ( Adaptsizetodensity (source_icon_left_padding ), Adaptsizetodensity (top_padding ), Adaptsizetodensity (source_icon_right_padding ), Adaptsizetodensity (bottom_padding )); Sourceiconview. setid (D1 ); Return sourceiconview; } Protected imageview createstatusicon (activity ){ Imageview statusiconview = new imageview (activity ); Statusiconview. setadjustviewbounds (true ); Statusiconview. setmaxheight (adaptsizetodensity (32 )); Statusiconview. setmaxwidth (adaptsizetodensity (32 )); Statusiconview. setid (D2 ); Return statusiconview; } Protected textview createstatustext (activity ){ Textview statustextview = new textview (activity ); Statustextview. setpadding (adaptsizetodensity (status_l_padding ), 0, 0, 0 ); Statustextview. settextsize (status_font_size ); Statustextview. settextcolor (enabled_text_color ); Statustextview. setbackgroundcolor (Android. R. color. Black ); Statustextview. setid (D3 ); Return statustextview; } Protected textview createtitletext (activity ){ Textview titletextview = new textview (activity ); Titletextview. settextsize (title_font_size ); Titletextview. setpadding (adaptsizetodensity (title_l_padding ), Adaptsizetodensity (top_padding), 0, 0 ); Titletextview. settextcolor (enabled_text_color); // color Titletextview. setid (D4 ); Return titletextview; } Public void seticon (INT image ){ Seticonuithread. seticon (image ); Activity. runonuithread (seticonuithread ); } Public void setstatusicon (INT image ){ Setstatusiconuithread. seticon (image ); Activity. runonuithread (setstatusiconuithread ); } Public void setstatusstring (string value ){ Setstatusstringuithread. settext (value ); Activity. runonuithread (setstatusstringuithread ); } Public void settitle (string value ){ Settitleuithread. settitle (value ); Activity. runonuithread (settitleuithread ); }}