【达内课程】自定义控件
程序员文章站
2022-06-07 13:41:50
...
原生,开源,自定义控件
CustomView
//继承View或View的子类,就是自定义控件
public class CustomView extends View {
int viewHeight;
int viewWidth;
//AttributeSet对应布局中的属性
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
//得到控件大小
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
viewWidth = w;
viewHeight = h;
super.onSizeChanged(w, h, oldw, oldh);
}
//canvas画文字,图形
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Rect rect = new Rect(0,0,viewWidth,viewHeight);
canvas.drawRect(rect,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main
<com.xx.myapplication.CustomView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
第一次执行流程
MainActivity中onCreate中的setContentView执行后
执行自定义控件的构造方法
onSizeChanged
onDraw
如果单击,触发onTouchEvent
如果横竖屏发生变化
会重新执行MainActivity的onCreate
执行自定义控件的构造方法
onSizeChanged
onDraw
如果AndroidManifest中设置configChanges
android:configChanges="orientation|screenSize|keyboardHidden"
再次执行程序,第一次执行流程还是相同的
如果横竖屏发生变化,会直接再次执行
onSizeChanged
onDraw
上一篇: EBS-新增和更新价目表行
下一篇: 细说伪类,盒模型,响应式布局