作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 GradientDrawable 动态改变它的渐变中心。我有简单的测试 View ,它只是用渐变绘制来绘制背景。然后我写了这样的代码:
public class TestActivity extends Activity {
protected TestView test_view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
test_view = (TestView)findViewById(R.id.test_view);
test_view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX()/TestView.WND_WIDTH;
float y = event.getY()/TestView.WND_HEIGHT;
Log.i("zim32", String.valueOf(x));
GradientDrawable drawable = (GradientDrawable)test_view.getBackground();
drawable.setGradientCenter(x, y);
test_view.invalidate();
return true;
}
});
}
}
但是渐变中心保持在中心位置...没有任何移动..可能出了什么问题?
最佳答案
尝试在此无效之前调用view.setBackgroundDrawable(drawable);
。看起来没有必要这样做,因为您正在获取对已设置的背景可绘制对象的引用并为其设置属性,但是如果您看到 View.setBackgroundDrawable(drawable); 后面的源
你会看到它还设置了一些标志等等。供引用:grepcode
另一件事要提 - 您正在其他地方设置初始背景可绘制,不是吗?因为如果您没有在其他地方设置初始背景可绘制对象,test_view.getBackground()
将返回 null
并且您基本上什么也不做。 :)
关于java - 安卓。 GradientDrawable 设置GradientCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695917/
我是一名优秀的程序员,十分优秀!