0
GitHubのサンプルコードがあります。例はうまくいきますが、コードの一部しか取っていないときは、それを動作させることはできません。カスタムビューを使用してXMLファイルに -methodという質問があります。コードは次のとおりです。アンドロイド:カスタムビューのonClickメソッド
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.tapio.testingapp.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<com.example.tapio.testingapp.LVCircularCD
android:id="@+id/lv_circularCD"
android:layout_width="50dp"
android:layout_height="50dp"
android:onClick="startAnim"/>
</RelativeLayout>
Javaコード:
public class LVCircularCD extends View {
private Paint mPaint;
private float mWidth = 0f;
private float mPadding = 0f;
RotateAnimation mProgerssRotateAnim;
RectF rectF = new RectF();
RectF rectF2 = new RectF();
public LVCircularCD(Context context) {
this(context, null);
}
public LVCircularCD(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LVCircularCD(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (getMeasuredWidth() > getHeight())
mWidth = getMeasuredHeight();
else
mWidth = getMeasuredWidth();
mPadding = 5;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
mPaint.setStrokeWidth(2);
canvas.drawCircle(mWidth/2, mWidth/2, mWidth/2 - mPadding, mPaint);
mPaint.setStrokeWidth(3);
canvas.drawCircle(mWidth/2, mWidth/2, mPadding, mPaint);
mPaint.setStrokeWidth(2);
rectF = new RectF(mWidth/2 - mWidth/3, mWidth/2 - mWidth/3,
mWidth/2 + mWidth/3, mWidth/2 + mWidth/3);
canvas.drawArc(rectF, 0, 80
, false, mPaint);
canvas.drawArc(rectF, 180, 80
, false, mPaint);
rectF2 = new RectF(mWidth/2 - mWidth/4, mWidth/2 - mWidth/4,
mWidth/2 + mWidth/4, mWidth/2 + mWidth/4);
canvas.drawArc(rectF2, 0, 80
, false, mPaint);
canvas.drawArc(rectF2, 180, 80
, false, mPaint);
canvas.restore();
}
private void initPaint() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.WHITE);
mProgerssRotateAnim = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
mProgerssRotateAnim.setRepeatCount(-1);
mProgerssRotateAnim.setInterpolator(new LinearInterpolator());//不停顿
mProgerssRotateAnim.setFillAfter(true);//停在最后
}
public void setViewColor(int color)
{
mPaint.setColor(color);
postInvalidate();
}
public void startAnim(View view) {
stopAnim();
mProgerssRotateAnim.setDuration(1500);
startAnimation(mProgerssRotateAnim);
}
public void startAnim(int time) {
stopAnim();
mProgerssRotateAnim.setDuration(time);
startAnimation(mProgerssRotateAnim);
}
public void stopAnim() {
clearAnimation();
}
}
問題のある場所がXMLファイルである:android:onclick = startAnim
。次のエラーが表示されます:"Corresponding method handler 'public void startAnim(android.view.View)' not found"
LVCircularCDの代わりにxmlレイアウトを使用しているアクティビティでstartAnimメソッドを追加してください –
アクティビティコードを追加してください。クリックを実行する場所。 –