Android的工作室:activity_main.xml中和content_main.xml没有显示设计preVIEW&放大器;&安培; ClassNotFoundException异常 [英] Android Studio: activity_main.xml and content_main.xml not showing design preview && ClassNotFoundException

查看:1504
本文介绍了Android的工作室:activity_main.xml中和content_main.xml没有显示设计preVIEW&放大器;&安培; ClassNotFoundException异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的Andr​​oid应用程序使用CircularLayout,我按照此圆形布局

错误:

1) activity_main.xml中和content_main.xml没有显示任何设计preVIEW。

2)在运行的应用程序,它显示的不幸的是,应用程序已经停止。

3)logcat的节目 的ClassNotFoundException。

没有编译错误或警告

以下是我的logcat:

  10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:致命异常:主要
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:工艺:com.example.shalini.circlelayout,PID:15699
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.shalini.circlelayout / com.example.shalini.circlelayout .MainActivity}:android.view.InflateException:二进制XML文件行#12:错误充气类com.example.shalini.circlelayout.MainActivity.Activity
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1321)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:110)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Looper.loop(Looper.java:193)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5292)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invokeNative(本机方法)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:515)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:828)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在dalvik.system.NativeStart.main(本机方法)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:android.view.InflateException:二进制XML文件行#12:错误充气类com.example.shalini.circlelayout所致。 MainActivity.Activity
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:255)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.example.shalini.circlelayout.MainActivity.onCreate(MainActivity.java:103)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.Activity.performCreate(Activity.java:5264)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1321)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:110)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Looper.loop(Looper.java:193)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5292)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invokeNative(本机方法)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:515)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:828)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在dalvik.system.NativeStart.main(本机方法)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:抛出java.lang.ClassNotFoundException:产生的原因没有找到类com.example.shalini.circlelayout.MainActivity.Activity在路径:DexPathList [zip文件\"/data/app/com.example.shalini.circlelayout-2.apk\"],nativeLibraryDirectories=[/data/app-lib/com.example.shalini.circlelayout-2, /供应商/ lib中/系统/ lib目录]
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.ClassLoader.loadClass(ClassLoader.java:497)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.ClassLoader.loadClass(ClassLoader.java:457)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.createView(LayoutInflater.java:559)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:255)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在com.example.shalini.circlelayout.MainActivity.onCreate(MainActivity.java:103)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.Activity.performCreate(Activity.java:5264)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.access $ 800(ActivityThread.java:151)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1321)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:110)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.os.Looper.loop(Looper.java:193)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5292)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invokeNative(本机方法)
10-03 00:27:29.609 15699-15699 / com.example.shalini.circlelayout E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:515)

好吧,我从中推断出,这不是能够找到类 com.example.shalini.circlelayout.MainActivity.Activity

问:

我们如何处理与ClassNotFoundException的在这种情况下?

这是我的MainActivity.java的样子:

 包com.example.shalini.circlelayout;进口android.content.Context;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.graphics.Canvas;
进口android.graphics.Color;
进口android.graphics.Paint;
进口android.graphics.RectF;进口android.os.Bundle;
进口android.support.design.widget.FloatingActionButton;
进口android.support.design.widget.Snackbar;进口android.support.v7.app.AppCompatActivity;
进口android.support.v7.widget.Toolbar;
进口android.util.AttributeSet;
进口android.view.View;
进口android.view.Menu;
进口android.view.MenuItem;公共类MainActivity扩展AppCompatActivity {
公共类活动扩展视图{
私人最终静态INT TOTAL_DEGREE = 360;
私人最终静态INT START_DEGREE = -90;私人涂料mPaint;
私人RectF mOvalRect = NULL;私人INT mItemCount = 5;
私人诠释mSweepAngle;私人诠释mInnerRadius;
私人诠释mOuterRadius;
私人位图mCenterIcon;
私人诠释[] = mColors {Color.RED,Color.YELLOW,Color.GREEN,Color.BLUE,Color.CYAN};
私有String [] = mTitles {APPT中心,MEDS内阁,CHECK-IN,我的纤夫,我的帐户};
公共活动(上下文的背景下){
    这(背景下,NULL);
}公共活动(上下文的背景下,ATTRS的AttributeSet){
    这(背景下,ATTRS,0);
}公共活动(上下文的背景下,ATTRS的AttributeSet,诠释defStyleAttr){
    超(背景下,ATTRS,defStyleAttr);    mPaint =新的油漆(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStrokeWidth(2);    mSweepAngle = TOTAL_DEGREE / mItemCount;    mInnerRadius = 125;
    mOuterRadius = 400;    mCenterIcon = BitmapFactory.de codeResource(getResources(),R.drawable.ic_launcher);
}@覆盖
保护无效的onDraw(帆布油画){    INT宽度=的getWidth();
    INT高度=的getHeight();    如果(mOvalRect == NULL){
        mOvalRect =新RectF(宽/ 2 - mOuterRadius,身高/ 2 - mOuterRadius,宽度/ 2 + mOuterRadius,高度/ 2 + mOuterRadius);
    }    的for(int i = 0; I< mItemCount;我++){
        INT由startAngle = START_DEGREE + I * mSweepAngle;
        mPaint.setColor(mColors [I]);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawArc(mOvalRect,startAngle开始,mSweepAngle,真实,mPaint);        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.STROKE);
        canvas.drawArc(mOvalRect,startAngle开始,mSweepAngle,真实,mPaint);        INT的centerX =(int)的((mOuterRadius + mInnerRadius)/ 2 * Math.cos(Math.toRadians(startAngle开始+ mSweepAngle / 2)));
        INT centerY =(int)的((mOuterRadius + mInnerRadius)/ 2 * Math.sin(Math.toRadians(startAngle开始+ mSweepAngle / 2)));
        canvas.drawBitmap(mCenterIcon,宽度/ 2 +的centerX - mCenterIcon.getWidth()/ 2,高度/ 2 + centerY - mCenterIcon.getHeight()/ 2,为空);        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawText(mTitles [I],宽度/ 2 +的centerX - mCenterIcon.getWidth()/ 2,高度/ 2 + centerY + mCenterIcon.getHeight(),mPaint);
    }    mPaint.setColor(Color.WHITE);
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(宽度/ 2,高度/ 2,mInnerRadius,mPaint);
    canvas.drawBitmap(mCenterIcon,宽度/ 2 - mCenterIcon.getWidth()/ 2,高度/ 2 - mCenterIcon.getHeight()/ 2,为空);    super.onDraw(画布);
}
}
@覆盖
保护无效的onCreate(捆绑savedInstanceState){    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    工具条工具栏=(栏)findViewById(R.id.toolbar);
    setSupportActionBar(工具栏);    FloatingActionButton FAB =(FloatingActionButton)findViewById(R.id.fab);
    fab.setOnClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(查看视图){
            Snackbar.make(看来,用自己的行动替换,Snackbar.LENGTH_LONG)
                    .setAction(动作,NULL).show();
        }
    });
}
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
//充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.menu_main,菜单);
返回true;
}@覆盖
公共布尔onOptionsItemSelected(菜单项项){
//处理动作栏项目点击这里。操作栏会
//自动处理上点击主页/向上按钮,只要
//你在AndroidManifest.xml中指定一个父活动。
INT ID = item.getItemId();// noinspection SimplifiableIfStatement
如果(ID == R.id.action_settings){
    返回true;
}返回super.onOptionsItemSelected(项目);
}
}

这是我的content_main.xml文件:

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:定制=htt​​p://schemas.android.com/apk/lib/com.google.custom
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto的android:layout_width =match_parent
机器人:layout_height =match_parent机器人:paddingLeft =@扪/ activity_horizo​​ntal_margin
机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
机器人:paddingBottom会=@扪/ activity_vertical_margin
应用:layout_behavior =@字符串/ appbar_scrolling_view_behavior
工具:舒=@布局/ activity_main工具:上下文=MainActivity。>
< com.example.shalini.circlelayout.MainActivity.Activity
机器人:ID =@ + ID /馅饼
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:背景=@机器人:彩色/白
定制:dividerWidth =5DP
定制:innerCircle =@绘制/ profile_pic_icon
定制:innerRadius =50dp
定制:layoutMode =馅饼
定制:sliceDivider =@机器人:彩色/透明>< RelativeLayout的
    机器人:ID =@ + ID / appt_center_container
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:背景=@绘制/ ic_launcher1>    <的TextView
        机器人:ID =@ + ID /一
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:比重=中心        机器人:文字=@字符串/ appcenter
        机器人:文字样式=大胆/>
< / RelativeLayout的>< RelativeLayout的
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:背景=@绘制/ ic_launcher2>    <的TextView
        机器人:ID =@ + ID /两个
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:比重=中心        机器人:文字=@字符串/ medscabinet
        机器人:文字样式=大胆/>
< / RelativeLayout的>< RelativeLayout的
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:背景=@绘制/ ic_launcher3>    <的TextView
        机器人:ID =@ + ID /三
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:比重=中心        机器人:文字=@字符串/ cjeckin
        机器人:文字样式=大胆/>
< / RelativeLayout的>< RelativeLayout的
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:背景=@绘制/ ic_launcher4>    <的TextView
        机器人:ID =@ + ID /四
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:比重=中心        机器人:文字=@字符串/ mytrackers
        机器人:文字样式=大胆/>
< / RelativeLayout的>< RelativeLayout的
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:背景=@绘制/ ic_launcher5>    <的TextView
        机器人:ID =@ + ID /五
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:比重=中心        机器人:文字=@字符串/ myaccounts
        机器人:文字样式=大胆/>
< / RelativeLayout的>
< /com.example.shalini.circlelayout.MainActivity.Activity>< / RelativeLayout的>

这里是activity_main.xml中的文件:

 <?XML版本=1.0编码=UTF-8&GT?;
< android.support.design.widget.CoordinatorLayout
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto
的xmlns:工具=htt​​p://schemas.android.com/tool​​s的android:layout_width =match_parent
机器人:layout_height =match_parent机器人:fitsSystemWindows =真
工具:上下文=MainActivity。>< android.support.design.widget.AppBarLayout机器人:layout_height =WRAP_CONTENT
    机器人:layout_width =match_parent安卓主题=@风格/ AppTheme.AppBarOverlay>    < android.support.v7.widget.Toolbar机器人:ID =@ + ID /工具栏
        机器人:layout_width =match_parent机器人:layout_height =?ATTR / actionBarSize
        ?ATTR / colorPrimary:Android的背景=应用:popupTheme =@风格/ AppTheme.PopupOverlay/>< /android.support.design.widget.AppBarLayout><包括布局=@布局/ content_main/>< android.support.design.widget.FloatingActionButton机器人:ID =@ + ID / FAB
    机器人:layout_width =WRAP_CONTENT机器人:layout_height =WRAP_CONTENT
    机器人:layout_gravity =底部|结束机器人:layout_margin =@扪/ fab_margin
    机器人:SRC =@机器人:可绘制/ ic_dialog_email/>< /android.support.design.widget.CoordinatorLayout>


解决方案

创建外部类 YourNewView延伸查看而不是作为活动扩展视图

XML 把为< com.example.shalini.circlelayout.YourNewView

无论你使用的ID为新的圆形布局 YourNewView

投它

试试吧。

 公共类YourNewView扩展视图{
私人最终静态INT TOTAL_DEGREE = 360;
私人最终静态INT START_DEGREE = -90;私人涂料mPaint;
私人RectF mOvalRect = NULL;私人INT mItemCount = 5;
私人诠释mSweepAngle;私人诠释mInnerRadius;
私人诠释mOuterRadius;
私人位图mCenterIcon;
私人诠释[] = mColors {Color.RED,Color.YELLOW,Color.GREEN,Color.BLUE,Color.CYAN};
私有String [] = mTitles {APPT中心,MEDS内阁,CHECK-IN,我的纤夫,我的帐户};
公共YourNewView(上下文的背景下){
    这(背景下,NULL);
}公共YourNewView(上下文的背景下,ATTRS的AttributeSet){
    这(背景下,ATTRS,0);
}公共YourNewView(上下文的背景下,ATTRS的AttributeSet,诠释defStyleAttr){
    超(背景下,ATTRS,defStyleAttr);    mPaint =新的油漆(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStrokeWidth(2);    mSweepAngle = TOTAL_DEGREE / mItemCount;    mInnerRadius = 125;
    mOuterRadius = 400;    mCenterIcon = BitmapFactory.de codeResource(getResources(),R.drawable.ic_launcher);
}@覆盖
保护无效的onDraw(帆布油画){    INT宽度=的getWidth();
    INT高度=的getHeight();    如果(mOvalRect == NULL){
        mOvalRect =新RectF(宽/ 2 - mOuterRadius,身高/ 2 - mOuterRadius,宽度/ 2 + mOuterRadius,高度/ 2 + mOuterRadius);
    }    的for(int i = 0; I< mItemCount;我++){
        INT由startAngle = START_DEGREE + I * mSweepAngle;
        mPaint.setColor(mColors [I]);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawArc(mOvalRect,startAngle开始,mSweepAngle,真实,mPaint);        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.STROKE);
        canvas.drawArc(mOvalRect,startAngle开始,mSweepAngle,真实,mPaint);        INT的centerX =(int)的((mOuterRadius + mInnerRadius)/ 2 * Math.cos(Math.toRadians(startAngle开始+ mSweepAngle / 2)));
        INT centerY =(int)的((mOuterRadius + mInnerRadius)/ 2 * Math.sin(Math.toRadians(startAngle开始+ mSweepAngle / 2)));
        canvas.drawBitmap(mCenterIcon,宽度/ 2 +的centerX - mCenterIcon.getWidth()/ 2,高度/ 2 + centerY - mCenterIcon.getHeight()/ 2,为空);        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawText(mTitles [I],宽度/ 2 +的centerX - mCenterIcon.getWidth()/ 2,高度/ 2 + centerY + mCenterIcon.getHeight(),mPaint);
    }    mPaint.setColor(Color.WHITE);
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(宽度/ 2,高度/ 2,mInnerRadius,mPaint);
    canvas.drawBitmap(mCenterIcon,宽度/ 2 - mCenterIcon.getWidth()/ 2,高度/ 2 - mCenterIcon.getHeight()/ 2,为空);    super.onDraw(画布);
   }
  }

请删除活动延伸查看 MainActivity

I want to use CircularLayout in my android app and I'm following this Circular Layout .

Errors:

1)activity_main.xml and content_main.xml are not showing any design preview.

2)On running app, it shows Unfortunately, app has stopped.

3)The logcat shows ClassNotFoundException.

There is no compilation error or warning.

Following is my logcat:

10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime: FATAL EXCEPTION: main
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime: Process: com.example.shalini.circlelayout, PID: 15699
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shalini.circlelayout/com.example.shalini.circlelayout.MainActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.shalini.circlelayout.MainActivity.Activity
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5292)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:  Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.shalini.circlelayout.MainActivity.Activity
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:255)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.example.shalini.circlelayout.MainActivity.onCreate(MainActivity.java:103)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5264)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5292) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:  Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.shalini.circlelayout.MainActivity.Activity" on path: DexPathList[[zip file "/data/app/com.example.shalini.circlelayout-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.shalini.circlelayout-2, /vendor/lib, /system/lib]]
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.createView(LayoutInflater.java:559)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:255) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at com.example.shalini.circlelayout.MainActivity.onCreate(MainActivity.java:103) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5264) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5292) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-03 00:27:29.609 15699-15699/com.example.shalini.circlelayout E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)

Well I inferred from it that it's not able to locate the class com.example.shalini.circlelayout.MainActivity.Activity.

Question:

How do we deal with ClassNotFoundException in this case?

This is how my MainActivity.java looks like:

package com.example.shalini.circlelayout;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {
public class Activity extends View {
private final static int TOTAL_DEGREE = 360;
private final static int START_DEGREE = -90;

private Paint mPaint;
private RectF mOvalRect = null;

private int mItemCount = 5;
private int mSweepAngle;

private int mInnerRadius;
private int mOuterRadius;
private Bitmap mCenterIcon;
private int[] mColors = {Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.CYAN};
private String[] mTitles = {"APPT CENTER", "MEDS CABINET", "CHECK-IN", "MY TRACKERS", "MY ACCOUNTS"};


public Activity(Context context) {
    this(context, null);
}

public Activity(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public Activity(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);

    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStrokeWidth(2);

    mSweepAngle = TOTAL_DEGREE / mItemCount;

    mInnerRadius = 125;
    mOuterRadius = 400;

    mCenterIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}

@Override
protected void onDraw(Canvas canvas) {

    int width = getWidth();
    int height = getHeight();

    if (mOvalRect == null) {
        mOvalRect = new RectF(width / 2 - mOuterRadius, height / 2 - mOuterRadius, width / 2 + mOuterRadius, height / 2 + mOuterRadius);
    }

    for (int i = 0; i < mItemCount; i++) {
        int startAngle = START_DEGREE + i * mSweepAngle;
        mPaint.setColor(mColors[i]);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawArc(mOvalRect, startAngle, mSweepAngle, true, mPaint);

        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.STROKE);
        canvas.drawArc(mOvalRect, startAngle, mSweepAngle, true, mPaint);

        int centerX = (int) ((mOuterRadius + mInnerRadius) / 2 * Math.cos(Math.toRadians(startAngle + mSweepAngle / 2)));
        int centerY = (int) ((mOuterRadius + mInnerRadius) / 2 * Math.sin(Math.toRadians(startAngle + mSweepAngle / 2)));
        canvas.drawBitmap(mCenterIcon, width / 2 + centerX - mCenterIcon.getWidth() / 2, height / 2 + centerY - mCenterIcon.getHeight() / 2, null);

        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawText(mTitles[i], width / 2 + centerX - mCenterIcon.getWidth() / 2, height / 2 + centerY + mCenterIcon.getHeight(), mPaint);
    }

    mPaint.setColor(Color.WHITE);
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(width / 2, height / 2, mInnerRadius, mPaint);
    canvas.drawBitmap(mCenterIcon, width / 2 - mCenterIcon.getWidth() / 2, height / 2 - mCenterIcon.getHeight() / 2, null);

    super.onDraw(canvas);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
    return true;
}

return super.onOptionsItemSelected(item);
}
}

This is my content_main.xml file:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/lib/com.google.custom"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main" tools:context=".MainActivity">
<com.example.shalini.circlelayout.MainActivity.Activity
android:id="@+id/pie"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
custom:dividerWidth="5dp"
custom:innerCircle="@drawable/profile_pic_icon"
custom:innerRadius="50dp"
custom:layoutMode="pie"
custom:sliceDivider="@android:color/transparent" >

<RelativeLayout
    android:id="@+id/appt_center_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher1" >

    <TextView
        android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"

        android:text="@string/appcenter"
        android:textStyle="bold" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher2" >

    <TextView
        android:id="@+id/two"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"

        android:text="@string/medscabinet"
        android:textStyle="bold" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher3" >

    <TextView
        android:id="@+id/three"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"

        android:text="@string/cjeckin"
        android:textStyle="bold" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher4" >

    <TextView
        android:id="@+id/four"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"

        android:text="@string/mytrackers"
        android:textStyle="bold" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_launcher5" >

    <TextView
        android:id="@+id/five"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"

        android:text="@string/myaccounts"
        android:textStyle="bold" />
</RelativeLayout>
</com.example.shalini.circlelayout.MainActivity.Activity>

</RelativeLayout>

And here is the activity_main.xml file:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
    android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
        android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main" />

<android.support.design.widget.FloatingActionButton android:id="@+id/fab"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"   android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

解决方案

Create outer class YourNewView extends View but not as Activity extends View.

In xml put as <com.example.shalini.circlelayout.YourNewView

Wherever you use id for your new circular layout cast it with YourNewView

Try it.

public class YourNewView extends View {
private final static int TOTAL_DEGREE = 360;
private final static int START_DEGREE = -90;

private Paint mPaint;
private RectF mOvalRect = null;

private int mItemCount = 5;
private int mSweepAngle;

private int mInnerRadius;
private int mOuterRadius;
private Bitmap mCenterIcon;
private int[] mColors = {Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.CYAN};
private String[] mTitles = {"APPT CENTER", "MEDS CABINET", "CHECK-IN", "MY TRACKERS", "MY ACCOUNTS"};


public YourNewView (Context context) {
    this(context, null);
}

public YourNewView (Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public YourNewView (Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);

    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStrokeWidth(2);

    mSweepAngle = TOTAL_DEGREE / mItemCount;

    mInnerRadius = 125;
    mOuterRadius = 400;

    mCenterIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
}

@Override
protected void onDraw(Canvas canvas) {

    int width = getWidth();
    int height = getHeight();

    if (mOvalRect == null) {
        mOvalRect = new RectF(width / 2 - mOuterRadius, height / 2 - mOuterRadius, width / 2 + mOuterRadius, height / 2 + mOuterRadius);
    }

    for (int i = 0; i < mItemCount; i++) {
        int startAngle = START_DEGREE + i * mSweepAngle;
        mPaint.setColor(mColors[i]);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawArc(mOvalRect, startAngle, mSweepAngle, true, mPaint);

        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.STROKE);
        canvas.drawArc(mOvalRect, startAngle, mSweepAngle, true, mPaint);

        int centerX = (int) ((mOuterRadius + mInnerRadius) / 2 * Math.cos(Math.toRadians(startAngle + mSweepAngle / 2)));
        int centerY = (int) ((mOuterRadius + mInnerRadius) / 2 * Math.sin(Math.toRadians(startAngle + mSweepAngle / 2)));
        canvas.drawBitmap(mCenterIcon, width / 2 + centerX - mCenterIcon.getWidth() / 2, height / 2 + centerY - mCenterIcon.getHeight() / 2, null);

        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawText(mTitles[i], width / 2 + centerX - mCenterIcon.getWidth() / 2, height / 2 + centerY + mCenterIcon.getHeight(), mPaint);
    }

    mPaint.setColor(Color.WHITE);
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(width / 2, height / 2, mInnerRadius, mPaint);
    canvas.drawBitmap(mCenterIcon, width / 2 - mCenterIcon.getWidth() / 2, height / 2 - mCenterIcon.getHeight() / 2, null);

    super.onDraw(canvas);


   }
  }

Please remove Activity extends View from MainActivity

这篇关于Android的工作室:activity_main.xml中和content_main.xml没有显示设计preVIEW&放大器;&安培; ClassNotFoundException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆