首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我已经创建了两个自定义视图,并希望切换该视图

我已经创建了两个自定义视图,并希望切换该视图
EN

Stack Overflow用户
提问于 2012-03-17 18:23:24
回答 3查看 199关注 0票数 0

为什么这段代码不能工作?它总是强制结束,我想切换视图,但这并没有发生。它要么强制杀死,要么显示黑屏。我想切换四个视图。ar如何创建动画?

代码语言:javascript
复制
 public class DrawDemoActivity extends Activity {
        DemoView demoview ;
        FinalView finalview;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        boolean first=true;
        boolean sec=false;
        demoview = new DemoView(this);
        finalview = new FinalView(this);
           // for contnivew switching the view 
        for(int i=0;i>0;i++)
        {
            if (first==true||sec==false)
            {
                setContentView(finalview);
                first=false;
                sec=true;
            }else if(first==false||sec==true)
            {
                setContentView(demoview);
                first=true;
                sec=true;
            }else if(first==true||sec==true)
            {
                setContentView(demoview);
                first=false;
                sec=false;
            }else
            {   
                setContentView(demoview);
                first=false;
                sec=false;
            }
        }
    }
//first view 
    private class DemoView extends View{
        public DemoView(Context context){
            super(context);
        }

        @Override protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            // custom drawing code here
            // remember: y increases from top to bottom
            // x increases from left to right
            int x = 150;
            int y = 200;
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);

            // make the entire canvas white
            paint.setColor(Color.CYAN);
            canvas.drawPaint(paint);
            // another way to do this is to use:
            // canvas.drawColor(Color.WHITE);

            // draw blue circle with antialiasing turned on
            paint.setAntiAlias(true);

            paint.setColor(Color.RED);
            canvas.drawCircle(x-24, y+30, 11, paint);
            paint.setColor(Color.WHITE);            
            canvas.drawLine(0, 300 , 320, 300, paint);
        }
    }
    //second view 
        private class FinalView extends View {
            public FinalView(Context context){
        super(context);
        }

            @Override 
            protected void onDraw(Canvas canvas) {
                super.onDraw(canvas);
                // custom drawing code here
                // remember: y increases from top to bottom
                // x increases from left to right
                int x = 150;
                int y = 200;
                Paint paint = new Paint();
                paint.setStyle(Paint.Style.FILL);

                // make the entire canvas white
                paint.setColor(Color.CYAN);
                canvas.drawPaint(paint);
                // another way to do this is to use:
                // canvas.drawColor(Color.WHITE);

                // draw blue circle with antialiasing turned on
                paint.setAntiAlias(true);


                paint.setColor(Color.BLACK);
                canvas.drawCircle(x, y, 11, paint);
                canvas.drawCircle(x-11, y+19, 11, paint);
                canvas.drawCircle(x, y+38, 11, paint);
                canvas.drawCircle(x+20, y+30, 11, paint);
                canvas.drawCircle(x-11, y-19, 11, paint);


                paint.setColor(Color.RED);
                canvas.drawCircle(x+41, y+30, 11, paint);
                canvas.drawCircle(x+20, y+9, 11, paint);
                canvas.drawCircle(x-23, y-37, 11, paint);

                canvas.drawLine(0, 300 , 320, 300, paint);      
          }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2012-03-17 19:25:34

您的setContentView()似乎不会被调用,因为you for循环从不迭代

代码语言:javascript
复制
for(int i=0;i>0;i++)
票数 0
EN

Stack Overflow用户

发布于 2012-03-17 19:34:45

问题似乎出在onCreate方法中。由于for循环,因此无法访问setContentView方法,其中i永远不会大于零。int i=0;i>0;i++

此外,如上所述,如果您想切换视图,请使用ViewFlipper。您可以找到一个很好的示例here

票数 0
EN

Stack Overflow用户

发布于 2012-03-19 14:48:17

使用view flipper,你可以在调用next viewFlipper之前为它们的输入和输出设置动画。下面是一些可能有用的东西。

代码语言:javascript
复制
viewFlipper.setInAnimation(pushUpIn);
viewFlipper.setOutAnimation(pushUpOut);
viewFlipper.showNext();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9749180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档