Android Widget添加自定义控件

由于Widget设计上的缺陷,目前Widget只支持一下控件:
*FrameLayout
*LinearLayout
*RelativeLayout
*AnalogClock
*Button
*Chronometer
*ImageButton
*ImageView
*ProgressBar
*TextView

如果要增加自定义控件的支持呢,一下以4.2.2为例增加对自定义控件的支持

1.自定义控件例如MyAnalogClock,必须在定义类之前增加@RemoteView标志,并将MyAnalogClock加入到frameworks/base/core/java/android/widget/中,表示是让Widget支持的;

eg:

 

import java.util.TimeZone;


@RemoteView
public class MyAnalogClock extends View {
    private Time mCalendar;

    private Drawable mHourHand;
    private Drawable mMinuteHand;
    private Drawable mSecondHand;
    private Drawable mDial;
    private Drawable mDialCenter;

 

2.如果需要增加自定义控件的属性定义,在frameworks/base/core/res/res/values/attrs.xml中增加属性描述;

eg:


   
       
       
       
       
       
   

 

3.由于属性需要提供给外界使用,所以需要在frameworks/base/core/res/res/values/public.xml中增加属性的描述;

eg:

 
 
 
 
 

注意:属性的id一定要是唯一的,需要在

 

4.由于增加了新接口所以需要执行 make update-api的命令来重新生成frameworks/base/api/current.txt文件,后面可以直接在app和widget中调用该自定义控件了;

你可能感兴趣的:(Java&Android)