相关疑难解决方法(0)

如何绘制布局时如何判断?

我有一个自定义视图,可以将可滚动的位图绘制到屏幕上.为了初始化它,我需要传递父布局对象的像素大小.但是在onCreate和onResume函数期间,尚未绘制布局,因此layout.getMeasuredHeight()返回0.

作为一种解决方法,我添加了一个处理程序等待一秒然后测量.这是有效的,但它很草率,我不知道在布局绘制之前我能在多长时间内缩短时间.

我想知道的是,如何检测布局何时被绘制?有事件或回调吗?

android android-layout

194
推荐指数
5
解决办法
11万
查看次数

在首次启动活动期间,自定义视图动画不流畅

我有一个自定义视图,该视图将在

  1. 活动首次启动。
  2. 操作栏下拉菜单上的选择更改。

代码看起来像

DividendBarChartFragment .java

public class DividendBarChartFragment extends SherlockFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.dividend_bar_chart_fragment, container, false);

        // barChartCompositeViewByYear is custom view.
        this.barChartCompositeViewByYear = (BarChartCompositeView)v.findViewById(R.id.bar_chart_composite_view_by_year);

        final ViewTreeObserver viewTreeObserver0 = this.barChartCompositeViewByYear.getViewTreeObserver();

        // Only perform animation when view is ready?!
        viewTreeObserver0.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

            @SuppressLint("NewApi")
            @Override
            public void onGlobalLayout() {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    DividendBarChartFragment.this.barChartCompositeViewByYear.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                } else {
                    DividendBarChartFragment.this.barChartCompositeViewByYear.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                }

                DividendBarChartFragment.this.barChartCompositeViewByYear.animateCurrentBarHeight();
            }

        });  
Run Code Online (Sandbox Code Playgroud)

我希望animateCurrentBarHeight仅在Fragment准备好后才开始动画()。

我用addOnGlobalLayoutListener。但是,正如您在我的视频中看到的那样,似乎动画甚至发生在 …

animation android

5
推荐指数
1
解决办法
1290
查看次数

标签 统计

android ×2

android-layout ×1

animation ×1