Articles of android custom view

Android:如何从自定义视图的超类中获取属性

我有一个具有TextView的自定义视图。 我做了一个方法,返回TextView的resourceID 。 如果没有定义文本,则默认返回-1。 我也有一个从视图Ainheritance的自定义视图B 我的自定义视图有文字“hello”。 当我调用该方法来获取超类的属性时,我将返回-1。 在代码中,还有一个我能够如何检索值的例子,但是感觉有点儿怪异。 attrs.xml <declare-styleable name="A"> <attr name="mainText" format="reference" /> </declare-styleable> <declare-styleable name="B" parent="A"> <attr name="subText" format="reference" /> </declare-styleable> A类 protected static final int UNDEFINED = -1; protected void init(Context context, AttributeSet attrs, int defStyle) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.A, defStyle, 0); int mainTextId = getMainTextId(a); a.recycle(); if (mainTextId […]

Android的心脏图

我想做一个实时显示有氧graphics的应用程序。 这意味着我要测量心脏位,并想在我的应用程序中显示graphics中的比特率。 但我想知道绘制有氧图。 我已经经历了许多样本graphics代码,但是可以得到任何线索来绘制心图。 有任何线索吗?

Android 4.4中的自定义视图构造函数在Kotlin上崩溃,如何修复?

我有一个使用JvmOverloads写在Kotlin的自定义视图,我可以有默认值。 class MyView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle: Int = 0, defStyleRes: Int = 0 ) : LinearLayout(context, attrs, defStyle, defStyleRes) 在Android 5.1及以上版本中,所有工作都很好。 然而它在4.4中崩溃,因为4.4中的构造函数没有defStyleRes 。 我怎么能支持5.1及以上的版本,我可以defStyleRes但不是在4.4,而不需要明确有4个构造函数定义像我们在Java中所做的? 注意:下面的4.4可以正常工作,但是我们defStyleRes了defStyleRes 。 class MyView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle: Int = 0 ) : LinearLayout(context, attrs, defStyle)

如何以编程方式设置windowDrawsSystemBarBackgrounds?

我想以编程方式或代码方式添加属性windowDrawsSystemBarBackgrounds ,而不是值-V21,因为我只需要它在1个活动中,我在我的应用程序中使用主题select器,所以我不能有多个主题。 有可能在代码中启用此属性? 如果是这样,那我该怎么办呢? 提前致谢。

在Android中使用canvas和位图,如何获得这个图像?

我在android中是新的。 我想绘制这个图像(匹配统计) 并用10%到100%的颜色填充图像。 我试了这么多,这是形象 这是代码 public class DrawView extends View { Paint paint = new Paint(); public DrawView(Context context) { super(context); } @Override public void onDraw(Canvas canvas) { paint.setColor(Color.BLACK); paint.setStrokeWidth(3); canvas.drawRect(30, 30, 100, 100, paint); paint.setStrokeWidth(0); paint.setColor(Color.GRAY); canvas.drawRect(33, 60, 97, 97, paint); paint.setColor(Color.WHITE); canvas.drawRect(33, 33, 97, 60, paint); } 任何build议对我来说都是很有帮助的。 提前致谢。

真正的自定义形状的button

给定任何形状(实心圆,星形,三angular形,带有透明区域的位图等)我想知道是否有可能(使用最新的Android API)知道用户是否点击了视图或其外部。 例如,如果我有一个圆形的button,我想知道用户是否已经点击了圆内,但不是在圆外。 可能吗? 如果没有,也许我可以轮询的触摸事件的像素,如果它是透明的,忽略它,如果不是,把它作为一个点击事件?

绑定视图在RelativeLayout中拖动

我在RelativeLayout里创build了一个可拖动的视图 。 但它似乎超越了RelativeLayout。 我只是想在ViewGroup里面做一个可拖动的View 这个视图可以根据屏幕draggable 。 它可以在RelativeLayout的边界之外拖动。 我怎么能限制它在RelativeLayout中保持可拖动。 CustomImageButton public class ImageButtonCustom extends ImageButton implements View.OnTouchListener{ float dX, dY; private RelativeLayout rootView; private ImageButtonCustom imageButtonCustom; private OnMoveListener onMoveListener; public ImageButtonCustom(Context context,RelativeLayout rootView){ super(context); this.rootView = rootView; init(); } public ImageButtonCustom(Context context) { super(context); init(); } public ImageButtonCustom(Context context, AttributeSet attrs) { super(context, attrs); init(); } […]

如何实现自定义select器状态的CustomView?

我想创build一个显示图像的CustomView 。 点击视图应该改变它的状态。 视图可以表示三种状态(closures,设置,未设置) 。 我想用XML中的select器来做到这一点。 它并不需要成为一个自定义select器。 我可以重用select器的三种状态(不pipe状态的名称是不同的)。 有没有一个很好的方法来实现这一目标?

什么样的声明式?

假设我正在用风格化的属性做一些新的视图。 我这样宣布他们(这就是文档如何做到的 : <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="TriangleView"> <attr name="direction"> <enum name="NE" value="0" /> <enum name="NW" value="1" /> <enum name="SW" value="2" /> <enum name="SE" value="3" /> </attr> </declare-styleable> <declare-styleable name="BannerView"> <attr name="direction"> <enum name="NE" value="0" /> <enum name="NW" value="1" /> <enum name="SW" value="2" /> <enum name="SE" value="3" /> </attr> <attr name="thickness" format="dimension" /> </declare-styleable> […]

为什么view.onLayout()被重复调用时更改= false?

从官方文档: Android文档 – 查看 protected void onLayout (boolean changed, int left, int top, int right, int bottom) Parameters changed This is a new size or position for this view left Left position, relative to parent top Top position, relative to parent right Right position, relative to parent bottom Bottom position, relative to parent 为什么我的自定义视图被重复调用changed=false ? […]