android定义view
A. android自定义View组合控件
需要看你实现什么效果。一般自定义控件可以用2种方式:
1.
将现有的控件封装起来,作为一个通用的组件来使用,此时只能用代码的形式调用,无法再xml中引用,例如将textview和button封装为一个登录控件。
2.
继承view或者viewgroup,其实viewgroup也是继承的view。然后依次实现onmeasure()、onlayout()、ondraw(),
1.
onmeasure
--
负责测绘控件的大小
2.
onlayout
--
负责控件中子元素摆放的位置
3.
ondraw
--
负责控件和子控件的绘制,使其显示在屏幕中
4.
一些设计和实现较好的自定义view,一般还需要考虑事件的传递、动画的控制、touch事件的处理等
B. Android的View基类的构造函数是怎样定义的
如果你做过自定义view,你就会知道它的三个常用的构造方法。
一个参数的构造方法:这个是在我们使用new关键字来创建View的时候调用
两个参数的构造方法:这个会在我们将View写在XML中的时候调用
三个参数的构造方法:这个会在我们将View写在XML中,并且自定义了style的时候会调用
C. android自定义view要怎么使用
视图,凡事能被用户看到的小控件都是一种view,也可以自定义view
D. android 自定义view 怎么规定view的样式
android 自定义view的样式的实现:
1.在values文件夹下,打开attrs.xml,其实这个文件名称可以是任意的,写在这里更规范一点,表示里面放的全是view的属性。
2.因为我们下面的实例会用到2个长度,一个颜色值的属性,所以我们这里先创建3个属性。
<declare-styleable name="rainbowbar">
<attr name="rainbowbar_hspace" format="dimension"></attr>
<attr name="rainbowbar_vspace" format="dimension"></attr>
<attr name="rainbowbar_color" format="color"></attr>
</declare-styleable>
举例说明:
蓝色的进度条
public class RainbowBar extends View {
//progress bar color
int barColor = Color.parseColor("#1E88E5");
//every bar segment width
int hSpace = Utils.dpToPx(80, getResources());
//every bar segment height
int vSpace = Utils.dpToPx(4, getResources());
//space among bars
int space = Utils.dpToPx(10, getResources());
float startX = 0;
float delta = 10f;
Paint mPaint;
public RainbowBar(Context context) {
super(context);
}
public RainbowBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public RainbowBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//read custom attrs
TypedArray t = context.obtainStyledAttributes(attrs,
R.styleable.rainbowbar, 0, 0);
hSpace = t.getDimensionPixelSize(R.styleable.rainbowbar_rainbowbar_hspace, hSpace);
vSpace = t.getDimensionPixelOffset(R.styleable.rainbowbar_rainbowbar_vspace, vSpace);
barColor = t.getColor(R.styleable.rainbowbar_rainbowbar_color, barColor);
t.recycle(); // we should always recycle after used
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(barColor);
mPaint.setStrokeWidth(vSpace);
}
.......
}
View有了三个构造方法需要我们重写,这里介绍下三个方法会被调用的场景,
第一个方法,一般我们这样使用时会被调用,View view = new View(context);
第二个方法,当我们在xml布局文件中使用View时,会在inflate布局时被调用,
<View layout_width="match_parent" layout_height="match_parent"/>。
第三个方法,跟第二种类似,但是增加style属性设置,这时inflater布局时会调用第三个构造方法。
<View style="@styles/MyCustomStyle" layout_width="match_parent" layout_height="match_parent"/>。
E. 如何在android studio中实现自定义view
一、首先新建一个项目,项目及名称自拟。
二、在app上点击右键->new->Mole 选择Android library。
三、在topbar下的values中新建一个attrs.xml文件,用来存放自定义view的属性。
4.在topbar下实现view。
5.上面两部做完后就是引用这个view,这里需要注意的是要在主app的build.gradle中添加引用如下:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':topbar')
}
topbar就是要使用的moudle,切记添加引用。然后就可以使用了。
6.要想使用自定义view中的属性的话任然需要添加xmlns:custom="schemas.android.com/apk/res-auto",前面加上http。
在这里还要注意命名空间也就是xustom之前一定不能定义过,否则重复的话就无法使用。
F. android怎么自定义view
java">{
publicCustomTextview(Contextcontext){
this(context,null);
}
publicCustomTextview(Contextcontext,AttributeSetattrs){
this(context,attrs,com.android.internal.R.attr.textViewStyle);
}
publicCustomTextview(Contextcontext,AttributeSetattrs,intdefStyleAttr){
super(context,attrs,defStyleAttr);
//setText("Fuckme");
}
直接可以在xml布局文件中,调用。
G. android 自常用的自定义的view有哪些
自定义的View,相应的布局关系。
步骤阅读2View的布局可以重写的方法有这些。
步骤阅读3常用的方法可以重写。
步骤阅读4自定义View类的结构 步骤阅读6onDraw(Canvas canvas) onTouchEvent(MotionEvent event) 是被重写的方法。 这个例子是 点击屏幕就画一个小圆。 步骤阅读7public class DrawView extends View{ public float currentX = 40; public float currentY = 50; // 定义、并创建画笔 Paint p = new Paint(); public DrawView(Context context) { super(context); } public DrawView(Context context , AttributeSet set) { super(context ,set); } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); // 设置画笔的颜色 p.setColor(Color.RED); // 绘制一个小圆(作为小球) canvas.drawCircle(currentX, currentY, 15, p); } // 为该组件的触碰事件重写事件处理方法 @Override public boolean onTouchEvent(MotionEvent event) { // 修改currentX、currentY两个属性 currentX = event.getX(); currentY = event.getY(); // 通知当前组件重绘自己 invalidate(); // 返回true表明该处理方法已经处理该事件 return true; }}
H. Android的View类是怎样定义的源代码是什么
view的定义还真不是一两句话能说清楚的。源码里代码2万多行,最前面的注释有500多行。
如果你用android studio,直接Ctrl 点击View应该就能看到源码。
当然也可以在网页里查看源码
http ://androidxref.com