java - 安卓。 GradientDrawable 设置GradientCenter

标签 java android user-interface

我试图让 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/

相关文章:

user-interface - 对于普通的非技术用户,我的 Web 应用程序应该针对什么屏幕分辨率?

java - 怎样才称得上是带有GUI的简单Java程序呢?

android - 从 listView 中删除标题

java - 如何在android上加载 native 库?

java - SQLite JOIN 表与关系

java - "?:"运算符是 scala

android - 为什么 addJavascriptInterface 在发布后不起作用?

javascript - FCM 消息负载错误,数据对象内的嵌套对象错误

c++ - 获取窗口窗口在X-window系统中的位置?

Java POST 请求从 Web 服务获取 token