android自定义view获取控件,Android自定义View控件实现刷新效果

本文介绍了在Android中如何通过不同的方式获取LayoutInflater,并详细展示了如何在自定义View中实现点击事件触发颜色切换的刷新效果。通过在onDraw方法中绘制文字并设置点击事件,当点击事件触发时,改变颜色并调用invalidate方法刷新界面。此外,还提到了自定义控件占满屏幕可能需要调整LayoutParams的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种得到LinearInflater的方法

a. LayoutInflater inflater = getLayoutInflater();

b. LayoutInflater localinflater =

(LayoutInflater)context.getSystemService

(Context.LAYOUT_INFLATER_SERVICE);

c. LayoutInflater inflater = LayoutInflater.from(context);

onDraw 方法绘图,invalidate刷新界面。

效果图:

点击一下换颜色

onDraw画完图后,给控件设置点击事件 ,将参数传到控件里,然后invalidate刷新

1.onDraw画图,并增加changeColor方法

public class CusView3 extends View {

private int color = 0;

public CusView3(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

Paint mPaint = new Paint();

if (color > 2) {

color = 0;

}

switch (color) {

case 0:

mPaint.setColor(Color.GREEN);

break;

case 1:

mPaint.setColor(Color.RED);

break;

case 2:

mPaint.setColor(Color.BLUE);

break;

default:

break;

}

mPaint.setStyle(Style.FILL);

mPaint.setTextSize(35.0f);

canvas.drawText("点击我刷新", 10, 60, mPaint);

}

public void changeColor() { //为了让外面调用

color++;

}

}

2.布局

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/cusview3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

3.画图后 给控件设置点击事件 ,将参数传到控件里,然后invalidate刷新

public class TestCustomViewActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

view3 = (CusView3) findViewById(R.id.cusview3);

// 点击事件

view3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Message message = new Message();

message.what = 1;

myHandler.sendMessage(message);

}

});

}

Handler myHandler = new Handler() {

// 接收到消息后处理

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

// 调用方法

view3.changeColor();

// 刷新方法

view3.invalidate();

break;

}

super.handleMessage(msg);

}

};

private CusView3 view3;

}

至于自定义控件占整屏的问题,可能需要用layoutparams

以上所述是小编给大家介绍的Android自定义View控件实现刷新效果,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值