我是Android应用程序开发的新手,我意识到,归根结底,对最终用户真正重要的是应用程序的UI界面。
当涉及到UI界面时,我总是尽力而为,但我总是遇到一些问题。特别是,我经常遇到的主要问题之一,就是当我为某个按钮设置自定义背景颜色或图像时,点击效果会消失。所以,当你点击这个按钮时,虽然它显然会起作用,但在视觉上看起来并不美观。
我想知道是否有办法恢复原始的点击效果,或者以编程方式自己设置一些点击效果。
提前致谢。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#212121"/>
<corners android:radius="5dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#424242"/>
<corners android:radius="5dp"/>
</shape>
</item>
</selector>
这只是一个简单的例子。你可以自己创建更复杂的。
假设你有一个按钮或TextView或其他视图,你想在触摸事件期间改变它的颜色,并且在点击后执行某些操作:
button.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)
{
v.setBackgroundColor(Color.parseColor("#000000"));
}
if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL)
{
v.setBackgroundColor(Color.parseColor("#ffffff"));
}
return false;
}
});
然后添加点击监听器:
button .setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
do some stuff...
}
});
button.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
v.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
v.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 000000000));
}
return false;
}
});
public void triggerActionDownEvent(Button button);
,这样我就可以调用这个函数而不必为每个按钮编写所有的先前代码。现在我需要确保任何时候都不会按下超过一个按钮。我建议您通过编程设置颜色或图像。您可以使用以下方法:
Button button = (Button)findViewById(R.id.myButton);
button.setImageSource(R.drawable.image);