精华内容
下载资源
问答
  • 弧形背景墙弧形背景墙—弧形背景墙的基本介绍弧形背景墙是一种装饰于家庭客厅电视、沙发、玄关、卧室墙等的家庭装修艺术,以其新颖的构思、先进的工艺,不但满足了消费者装饰装修的需要,更体现了艺术的气质,使之...

    现在的装修方式真的是很多的,背景墙就是现在一种新型的装修方式,而且就算是一个小小的背景墙,它也是有很多形状的,比如弧形、圆形等。今天小编要给大家介绍的是弧形背景墙的相关知识。

    4ab8a67eae4e6f3243638e91e0ff4624.png

    弧形背景墙

    弧形背景墙—弧形背景墙的基本介绍

    弧形背景墙是一种装饰于家庭客厅电视、沙发、玄关、卧室墙等的家庭装修艺术,以其新颖的构思、先进的工艺,不但满足了消费者装饰装修的需要,更体现了艺 术的气质,使之成为商业与艺术的完美结合。

    弧形背景墙—弧形背景墙功能介绍

    有吸音、隔音、吸波功能的墙饰不仅可应用于家庭客厅电视背景墙、沙发背景墙、玄关、卧室墙等的家庭装修装饰,同样可以应用于旅馆饭店、歌厅 KTV、夜总会等娱乐场所的装修装饰,更可以应用于演艺厅、电影院、歌剧院、视听室、演播厅、录音室等吸音隔音要求专业的墙面装饰上。有了美丽的背景墙,去掉了本来枯燥无味的居室感觉,给消费者带来生动温暖的居室生活。

    客厅是家人休闲、亲朋好友相聚的场所,而大众家庭娱乐的手段主要是看电视、看VCD、唱卡拉OK等,于是,客厅的电视背景墙成了最吸引人们眼球的地方。事实上,在家装设计中,电视背景墙早已成了设计的"焦点",也是体现主人个性化的一个特殊空间。电视墙也就是电视背景装饰墙,是居室装饰特别是大户型居室的重点之一,在装修中占据相当重要的地位,电视墙通常是为了弥补客厅中电视机背景墙面的空旷,同时起到修饰客厅的作用。因为电视墙是家人目光注视最多的地方,长年累月地看也会让人厌烦,所以其装修就尤为讲究。应该说,如何将电视机背景墙装饰得漂亮,是使业主很费心的一件事电视柜背景装饰墙面可用的装饰材料很多,有木质的、天然石的,也有用人造文化砖及布料的。但对于电视背景墙而言,采用什么材料并不很重要,最主要的是要考虑这部分造型的美观及对整个空间的影响.也有设计师以矿棉吸声板为材料做电视吸声墙,就是将矿棉吸声板粘在平整的墙面或细木工板上,通过精心设计组合成一定的图案,也可用涂料将吸声板喷成自己喜爱的颜色,既具有装饰性,又有很强的实用性,起到室内吸声降噪的作用.选择背景墙一定要时尚和经典相结合,这样使人不容易产生视觉疲劳。

    弧形背景墙—弧形背景墙注意事项

    弧形背景墙的塑造形式也要十分注意,要避免有尖角、突出的设计,如三角形,以防止形成"煞"相。尽量不要对背景墙进行毫无意义的凌乱的分割,否则会对家人造成精神紧张,心神不宁,严重危害其身体健康。宜采用以圆形、弧形或平直无棱角的线形为主要造型,它蕴涵着圆融美满之意,使家庭和睦幸福,合全美美,平平安安。

    弧形背景墙是现在一种装修方式,是很新型的。大家也不要对背景墙这种装修方式觉得奇怪,要知道现在什么是不可能的,甚至是以前我们看到嫌弃的东西,现在也有可能成为一种受欢迎的装饰,这告诉我们未来是无法预测的。

    展开全文
  • 弧形ListView

    2014-05-20 15:33:02
    弧形展示的ListView. 列表的中间图片显示最大,往两端越小
  • 灵感来自于:Android 项目总结(一):弧形ViewPager 和弧形HeaderView 图片也来自上面的链接。 最近看到了好多这样的效果,身边同事也有提起过这种弧形的 View,其实实现这种效果的方法很多,我也尝试实现了...

    灵感来自于:Android 项目总结(一):弧形ViewPager 和弧形HeaderView

    图片也来自上面的链接。


    最近看到了好多这样的效果,身边同事也有提起过这种弧形的 View,其实实现这种效果的方法很多,我也尝试实现了一下,虽然方式不咋好,但好歹做出来效果。

    1 思路

    最开始看到这个效果第一反应就是用贝塞尔曲线去画一个下面是弧形的封闭曲线,然后再调用 Paint 的setXfermode() 将其设置为 SRC_IN(讲这个的文章网上倒是有很多,这个模式就是取两个东西的交集,显示上层图像的意思),然后再画图片不就行了吗,嗯,我获取圆形头像就是这么干的,理论上来说完全 ojbk


    2 ArcView

    说干就干,先自定义一个 ArcView:

    public class ArcView extends android.support.v7.widget.AppCompatImageView {
        private Paint mPaint;
        private Path mPath; //下面为弧形的封闭曲线
        private Bitmap mBitmap; //图片
        private int width;  //控件宽
        private int height; //控件高
        private int arcWidth;   //弧形宽
        private int arcHeight;  //弧形高
        private Rect srcRect;   //图片绘制区域
        private Rect dstRect;   //图片显示区域
    
        public ArcView(Context context) {
            this(context, null);
        }
    
        public ArcView(Context context, @Nullable AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public ArcView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            width = context.getResources().getDisplayMetrics().widthPixels;
            height = context.getResources().getDisplayMetrics().heightPixels / 2;
            mPaint = new Paint();
            mPaint.setColor(Color.WHITE);
            mPaint.setStyle(Paint.Style.FILL_AND_STROKE);   //画笔设置为填充,这个别忘了
            mPaint.setAntiAlias(true);
            mPath = new Path();
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            int widthMode = MeasureSpec.getMode(widthMeasureSpec);
            int widthSize = MeasureSpec.getSize(widthMeasureSpec);
            int heightMode = MeasureSpec.getMode(heightMeasureSpec);
            int heightSize = MeasureSpec.getSize(heightMeasureSpec);
            if (widthMode == MeasureSpec.EXACTLY) {
                width = widthSize;
            } else {
                width = getContext().getResources().getDisplayMetrics().widthPixels;
            }
    
            if (heightMode == MeasureSpec.EXACTLY) {
                height = heightSize;
            } else {
                height = getContext().getResources().getDisplayMetrics().heightPixels / 2;
            }
            arcWidth = width;
            arcHeight = height / 5; //取弧形的高度为整个控件的五分之一
            setMeasuredDimension(width, height);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            mPath.moveTo(0, 0);
            mPath.moveTo(0, height - arcHeight);
            mPath.quadTo(width / 2, height + arcHeight, width, height - arcHeight);
            mPath.lineTo(width, 0);
            mPath.lineTo(0, 0);
            canvas.drawPath(mPath, mPaint);
            if (mBitmap != null) {
                srcRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight());  //绘制区域
                dstRect = new Rect(0, 0, width, height);    //显示区域
                mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
                canvas.drawBitmap(mBitmap, srcRect, dstRect, mPaint);
            }
        }
    
        @Override
        public void setImageBitmap(Bitmap bitmap) {
            this.mBitmap = bitmap;
            invalidate();
        }
    
        @Override
        public void setImageResource(int resourceId) {
            this.mBitmap = BitmapFactory.decodeResource(getContext().getResources(), resourceId);
            invalidate();
        }
    
        /**
         * Description:加载完成后获取图片
         * Date:2018/1/22
         */
        @Override
        protected void onFinishInflate() {
            super.onFinishInflate();
            if (getDrawable() != null) {
                mBitmap = ((BitmapDrawable) getDrawable()).getBitmap();
            }
        }
    }

    老夫撸代码就是一口气写到底,一路写下来头脑清晰,毫无阻碍,布局很简单:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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"
        tools:context="com.qinshou.arcdemo.activity.ArcViewActivity">
    
        <com.qinshou.arcdemo.widget.ArcView
            android:layout_width="wrap_content"
            android:src="@drawable/a"
            android:id="@+id/av_test"
            android:layout_height="wrap_content" />
    </android.support.constraint.ConstraintLayout>


    满怀希望的跑起来一看:



    WTF,why!难道是这一行代码出了问题?

    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

    可是我之前画圆形图片就是这样的,毫无破绽啊,我把 drawPath() 换成 drawCircle() 了仍是如此,嗯,这里面一定有什么不可告人的秘密,等我定下心来的时候把它好好解剖一下,当务之急是要实现弧形效果。All the roads to the Rome,下面显示弧形,是不是先画图片,再画一个白色的弧形 View来遮住它下半部分即可?即一个白色的这样的 View:



    嗯,试一下,把 onDraw() 方法改一下:

        @Override
        protected void onDraw(Canvas canvas) {
            if (mBitmap != null) {
                srcRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight());
                dstRect = new Rect(0, 0, width, height);
                canvas.drawBitmap(mBitmap, srcRect, dstRect, mPaint);
            }
            mPath.moveTo(0, height - arcHeight);
            mPath.quadTo(width / 2, height + arcHeight, width, height - arcHeight);
            mPath.lineTo(width, height);
            mPath.lineTo(0, height);
            canvas.drawPath(mPath, mPaint);
        }


    虽然这种方法有投机取巧之嫌,不过也不失为一种思路,等后面小弟找出 setXfermode() 方法不好使是谁在作祟时,再捉它来给大家问罪。


    3 ArcViewPager

    既然 ArcView 弧形控件可以实现,那么弧形的 ViewPager 应该就不难了,把 ArcView 作为 ViewPager 的每一个页卡即可:
    public class ArcViewPagerActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_arc_view_pager);
            ViewPager viewPager = (ViewPager) findViewById(R.id.vp_test);
            int[] resource = new int[]{R.drawable.a, R.drawable.b, R.drawable.c
                    , R.drawable.d, R.drawable.e, R.drawable.f};
            List<View> viewList = new ArrayList<>();
            for (int i = 0; i < resource.length; i++) {
                ArcView mArcView = new ArcView(this);
                mArcView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
                mArcView.setImageResource(resource[i]);
                viewList.add(mArcView);
            }
            viewPager.setAdapter(new MyViewPagerAdapter(viewList));
        }
    
        private class MyViewPagerAdapter extends PagerAdapter {
            private List<View> viewList = new ArrayList<>();
    
            public MyViewPagerAdapter(List<View> viewList) {
                this.viewList = viewList;
            }
    
            @Override
            public int getCount() {
                return viewList.size();
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                container.addView(viewList.get(position));
                return viewList.get(position);
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView(viewList.get(position));
            }
        }
    }


    但是如果这么简单的实现的话,看起来总有点别扭,我是希望页卡滑动时只是中间的图片切换,但是下面的弧形不要跟着动,根据刚才 ArcView的思路,我决定自定义一个容器使用相对布局,先添加一个 ViewPager,然后继续在下面添加一个弧形遮挡 View:
    public class ArcViewPager extends RelativeLayout {
    
        private ViewPager mViewPager;
    
        public ArcViewPager(Context context) {
            this(context, null);
        }
    
        public ArcViewPager(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public ArcViewPager(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            ArcCoverView mArcCoverView = new ArcCoverView(getContext());
            mArcCoverView.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 200));
            mViewPager = new ViewPager(getContext());   //创建 ViewPager
            addView(mViewPager);    //添加 ViewPager
            addView(mArcCoverView); //添加弧形遮挡 View
        }
    
        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            super.onLayout(changed, l, t, r, b);
            //遍历子 View,将弧形遮挡 View 放在底部
            for (int i = 0; i < getChildCount(); i++) {
                if (getChildAt(i) instanceof ArcCoverView) {
                    ArcCoverView arcCoverView = (ArcCoverView) getChildAt(i);
                    arcCoverView.layout(0, getMeasuredHeight() - arcCoverView.getMeasuredHeight(), arcCoverView.getMeasuredWidth(), getMeasuredHeight());
                }
            }
        }
    
        /**
         * Description:将适配器设置给 ViewPager
         * Date:2018/1/22
         */
        public void setAdapter(PagerAdapter adapter) {
            mViewPager.setAdapter(adapter);
        }
    
        /**
         * Description:弧形遮挡 View
         * Date:2018/1/22
         */
        public class ArcCoverView extends View {
    
            private Paint mPaint;
            private Path mPath;
            private int width;
            private int height;
    
            public ArcCoverView(Context context) {
                this(context, null);
            }
    
            public ArcCoverView(Context context, @Nullable AttributeSet attrs) {
                this(context, attrs, 0);
            }
    
            public ArcCoverView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
                super(context, attrs, defStyleAttr);
                width = context.getResources().getDisplayMetrics().widthPixels;
                height = 200;
                mPaint = new Paint();
                mPaint.setColor(Color.WHITE);
                mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
                mPaint.setAntiAlias(true);
                mPath = new Path();
            }
    
            @Override
            protected void onDraw(Canvas canvas) {
                super.onDraw(canvas);
                mPath.moveTo(0, 0);
                mPath.quadTo(width / 2, height * 2, width, 0);
                mPath.lineTo(width, height);
                mPath.lineTo(0, height);
                canvas.drawPath(mPath, mPaint);
            }
        }
    }

    然后 Activity 中修改一下,可以直接添加 ImageView 为 ViewPager 的页卡了:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_arc_view_pager);
            ArcViewPager arcViewPager = (ArcViewPager) findViewById(R.id.avp_test);
            int[] resource = new int[]{R.drawable.a, R.drawable.b, R.drawable.c
                    , R.drawable.d, R.drawable.e, R.drawable.f};
            List<View> viewList = new ArrayList<>();
            for (int i = 0; i < resource.length; i++) {
                ImageView mImageView = new ImageView(this);
                mImageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
                mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                mImageView.setImageResource(resource[i]);
                viewList.add(mImageView);
            }
            arcViewPager.setAdapter(new MyViewPagerAdapter(viewList));
        }


    现在看起来顺眼多了。

    4 总结

    这次的目标虽然是实现了,但是总觉得实现方式不太优雅,这里只是提供了一种思路,大家不喜勿喷,如果有其他思路的,欢迎大家留言,或者可以给我解惑的,小弟不胜感激。好久没写博客,换了公司后需要一段时间适应,再加上在学习 python,实在是没有时间,总归要坚持的,2018 年第一篇,但必定不是最后一篇。希望自己可以走得更远。
    展开全文
  • 弧形图视图(绘制Creative Statistic弧形图)ArcChartViewDemo您可以使用此库绘制弧形图并显示统计信息或所需的任何内容,或者从用户那里获得一些评价。 您可以下载演示apk文件(您可以先在应用程序中调整Chart,...
  • 欧式弧形沙发3D模型

    2021-07-15 04:29:33
    欧式弧形沙发3D模型适用于沙发模型设计。
  • 电商平台中常见的弧形Banner,这个效果看起来还是挺新颖的,代码中是如何实现的呢?不多说先上效果图: 是不是很酷。有兴趣的话可以把代码(kotlin)下载下来看看。当然你有兴趣也可关注一下我的博客: ,不定期的更新...
  • 弧形渐变进度条

    2014-12-15 15:55:54
    弧形或圆形的渐变进度条。你也可以去掉代码中的渐变处理,变成普通的弧形进度条。另外里面还有带动画效果
  • 行业分类-作业装置- 弧形空心圆坯连铸机用结晶器及弧形空心圆坯连铸机.zip
  • Android弧形列表

    2015-12-11 12:36:35
    本文参考了github项目CircleList(地址),修改部分代码后实现了Android弧形列表显示图片,真实的轨迹是抛物线。
  • 弧形构造带控气特征

    2020-07-09 17:53:59
    基于弧形构造带对瓦斯富集程度及瓦斯灾害的分区性,探讨了弧形构造三度弯曲的控气特征。其中,第一度和第二度弯曲总体上控制了煤层气的赋存特征及补给、运移和逸散条件,第三度弯曲及其伴生的横张断裂控制了煤层气富集...
  • 弧形ViewPager

    2018-06-14 11:14:19
    我们常在电商平台看到的Banner是弧形的,这是怎么实现的呢?其实实现非常的简单,请接着往下看。老规矩,先上效果图:是不是这样的Banner很有新鲜感呢?/** * Created by csc on 2018/6/13. * information:有弧度...

    我们常在电商平台看到的Banner是弧形的,这是怎么实现的呢?其实实现非常的简单,请接着往下看。老规矩,先上效果图:

    是不是这样的Banner很有新鲜感呢?

    /**
     * Created by csc on 2018/6/13.
     * information:有弧度ImageView(注意使用的时候需要灵活使用,主要的是适当的修改一下偏移量offset即可满足需求)
     */
    class ArcImageView(context: Context) : AppCompatImageView(context){
    
        lateinit var mPaint: Paint
        lateinit var mPath: Path
    
        lateinit var mContext: Context
    
        //控件的宽
        var mWidth:Float=0F
        //控件的高
        var mHeight:Float=0F
    
        //偏移量(注意在程序中需要适当的修改一下偏移量才能满足你的需求)
        var offset:Float=80F
    
        constructor(context: Context,attrs: AttributeSet): this(context) {
            mContext=context
    
        }
    
        override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
            super.onSizeChanged(w, h, oldw, oldh)
    
            mWidth=w.toFloat()
            mHeight=h.toFloat()
    
            mPath = Path()
            mPaint = Paint(Paint.ANTI_ALIAS_FLAG)
            //设置弧形下部分需要填充的颜色
            mPaint.color = Color.WHITE
            mPaint.style = Paint.Style.FILL_AND_STROKE
    
        }
    
    
    
        override fun onDraw(canvas: Canvas?) {
            super.onDraw(canvas)
    
            //控制着幅度的高度(这个主要控制弧形的高度,如果想要幅度大一点,就把这个值修改大一些即可)
            var h:Float=(mHeight/8)*7
    
            mPath.moveTo(0F,h)
    
            /***
             * 二阶贝塞尔曲线
             *  在程序中适当的修改一下offset定制自己的需求
             */
            mPath.quadTo(mWidth/2,mHeight+offset,mWidth,h)
    
    
            mPath.lineTo(mWidth, mHeight+offset)
            mPath.lineTo(0.0F, mHeight+offset)
    
            canvas?.drawPath(mPath,mPaint)
        }
        
    }
    /**
     * Created by csc on 2018/6/14.
     * information:在这里应用我们自定义的弧形ImageView即可
     */
    class GlideImageLoader : ImageLoader(){
    
        override fun displayImage(context: Context?, path: Any?, imageView: ImageView?) {
            Glide.with(context).load(path).into(imageView)
        }
    
        override fun createImageView(context: Context?): ImageView {
            var image:ArcImageView=ArcImageView(context!!)
            return image
        }
    
    
    }
    /**
     * Created by csc on 2018/6/12.
     * infomation:
     */
    class MainActivity : AppCompatActivity() {
    
        var list:MutableList<String>?=null
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            initView()
        }
    
        private fun initView() {
    
            //设置透明状态栏
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                setTransparentStatusBar(true)
            }
    
            list= ArrayList<String>() as MutableList<String>?
            list?.add("https://manhua.qpic.cn/operation/0/11_11_22_c4de3602c8aff83100c018fce9f52d5c_1528687357296.jpg/0")
            list?.add("https://manhua.qpic.cn/operation/0/31_22_55_30aa7716ea9fd9abd139b10909d29d6e_1522508127196.jpg/0")
            list?.add("https://manhua.qpic.cn/operation/0/11_11_23_18a1debf5a249a4eeda00006ac467d01_1528687408905.jpg/0")
            list?.add("https://manhua.qpic.cn/operation/0/03_09_42_08ae84d5bd144070a8d5081062eb86b8_1525311724240.jpg/0")
            list?.add("https://manhua.qpic.cn/operation/0/11_11_23_2a169d0cbfff4864a8888da7c378627e_1528687424498.jpg/0")
    
            banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
            banner.setIndicatorGravity(BannerConfig.CENTER)
            banner.isAutoPlay(true)
            banner.setDelayTime(2000)
            banner.setImageLoader(GlideImageLoader())
            banner.setImages(list)
            banner.start()
        }
    
    
    
        //设置透明状态栏
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        fun setTransparentStatusBar(boolean: Boolean){
            val window = window
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            if (boolean){
                window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    
            }else{
                window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
    
            }
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            window.statusBarColor = Color.TRANSPARENT
    
    
        }
    
    
        override fun onDestroy() {
            banner.stopAutoPlay()
            super.onDestroy()
        }
    
    
    
    }
    

    布局设置:

    <RelativeLayout
        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"
        tools:context=".MainActivity">
    
        <FrameLayout
            android:id="@+id/fl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_230">
            <com.youth.banner.Banner
                android:id="@+id/banner"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_230"
                app:indicator_drawable_selected="@drawable/indicator_drawable_selected"
                app:indicator_drawable_unselected="@drawable/indicator_drawable_unselected"
                app:indicator_height="@dimen/dp_8"
                app:indicator_width="@dimen/dp_8"
                ></com.youth.banner.Banner>
    
            <LinearLayout
                android:layout_marginBottom="@dimen/dp_40"
                android:layout_gravity="bottom"
                android:background="@drawable/shape_chapter"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <TextView
                    android:textColor="#fff"
                    android:padding="@dimen/dp_5"
                    android:text="续看:海贼王 第1话"
                    android:textSize="@dimen/sp_10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
    
                <ImageView
                    android:layout_marginRight="@dimen/dp_10"
                    android:id="@+id/iv_recent"
                    android:layout_gravity="center_vertical"
                    android:src="@drawable/home_icon_close"
                    android:layout_width="@dimen/dp_13"
                    android:layout_height="@dimen/dp_13" />
    
            </LinearLayout>
    
        </FrameLayout>
    </RelativeLayout>
    OK,这样就实现弧形的Banner了。需要源码请移步:https://github.com/ChiShengCan/ArcViewPager


    展开全文
  • 有的时候在界面里,想要做个漂亮的弧形边用来美观单一不变的矩形框.简单的顶点控制并不能很好实现想要的效果,用图片又不够完美,且多了加载项.那怎么用CSS来实现弧形呢?先说一下原理,其实我们需要实现的是截取圆的小...

    有的时候在界面里,想要做个漂亮的弧形边用来美观单一不变的矩形框.简单的顶点控制并不能很好实现想要的效果,用图片又不够完美,且多了加载项.那怎么用CSS来实现弧形呢?

    先说一下原理,其实我们需要实现的是截取圆的小部分弧边,那么就首先要画一个足够大的圆,然后再在其中选取我们需要的截段,把其他部分隐去即可.一共也就两步.这里我们需要用到::after伪类.

    先画个框作为容器,CSS代码如下:

    #div_headContainer {

    -webkit-border-radius: 5px;

    -moz-border-radius: 5px;

    border-radius: 5px;

    margin: 5px;

    padding: 0 0 8px 0;

    height: 150px;

    border: darkgray 1px solid;

    }

    再在里面套个小框,是我们用来做圆的容器,CSS代码如下:

    #div_headContainerBackground {

    width: 100%;

    height: 100%;

    position: relative;

    overflow: hidden;

    padding: 10px 10px 0 10px;

    }

    接下去就是关键了,我们使用:after伪类来实现背景

    #div_headContainerBackground::after {

    content: '';

    width: 160%;

    height: 100%;

    position: absolute;

    left: -30%;

    top: 0;

    z-index: -1;

    border-radius: 0 0 50% 50%;

    background: -webkit-linear-gradient(left, #1ecec2, #1ad17a); /* Safari 5.1 - 6.0 */

    background: -o-linear-gradient(right, #1ecec2, #1ad17a); /* Opera 11.1 - 12.0 */

    background: -moz-linear-gradient(right, #1ecec2, #1ad17a); /* Firefox 3.6 - 15 */

    background: linear-gradient(to right, #1ecec2, #1ad17a); /* 标准的语法(必须放在最后) */

    }

    效果如下,可以直接查看HTML代码.在这过程中,在元素后追加一个after,元素自身定位为relative,伪类设置content:‘’,并相对定位为absolute,再设置下left,top值,使伪类元素的位置摆放的合理.这里需要注意的是把z-index值设为-1,因为弧形一般是作为背景图,层级自然要放低些.

    展开全文
  • 本文主要介绍了Android实现弧形菜单效果的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
  • 制作弧形按钮

    2017-12-01 09:14:04
    通过 路径 path 创建 弧形 按钮,主要用到rgn.CreateFromPath(&dc;); rgn.OffsetRgn(-rc0.left, -rc0.top);
  • 主要为大家详细介绍了Unity实现弧形移动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 弧形转动动画

    2014-10-28 08:42:18
    wpf弧形转动动画
  • 弧形和圆形布局

    2021-04-04 15:51:36
    源码ArcLayout,该源码案例是一个弧形(或者圆形)布局,在这个布局的基础上作者还实现了path以及Tumblr的菜单效果。也是一个简单的Android arc布局类库,点击按钮即可实现类似弹出菜单效果,按钮放置在任意的位置。...
  • 自定义弧形seekbar

    2016-04-27 10:32:10
    自定义弧形seekbar,开启线程进度条从0一直加载到progress.
  • 先来看效果:虽然效果还不错,但是有瑕疵,有两个明显的缺陷:底部的圆弧不是正圆弧:如上图所示,弧形有点歪,特别是在小屏幕手机上表现尤为明显,因为是用二阶贝塞尔曲线绘制的圆弧,不管怎么调整控制点,都不会是...
  • 弧形筛的筛分效果直接影响最终产品的质量、产率以及筛下水的后续处理。邢台矿选煤厂为取得良好的使用效果,从筛分效率、平均分配误差及总错配物含量等方面,对击打弧形筛和新型的ISB智能振网弧形筛进行了比较。结果...
  • 简单的说一下效果图,横向来区分的话可以把UI图分为三部分(左边是轮盘 , 中间是弧形列表 也是一级菜单 , 右边是列表是二级菜单): 要求: 实现一个围绕轮盘的弧形列表; 弧形列表滑动后自动选中居中的条目,...
  • 弧形筛的结构优化

    2020-07-03 21:16:25
    介绍了弧形筛的种类及主要结构,总结了给料箱盖板、匀料隔板、出料口调节装置、筛箱底板和筛嘴的耐磨、筛前溜槽及筛下接水槽等部件在现场应用中存在的问题,给出了经实践检验的解决方案。
  • 弧形黑洞旋转HTML5特效是一款个性的弧形黑洞旋转能量动画特效。
  • android 弧形进度条

    热门讨论 2013-01-15 15:35:08
    一个弧形进度条demo,类似于Progressbar和Seekbar。希望对大家有帮助。
  • 弧形黑洞旋转HTML5特效是一款个性的弧形黑洞旋转能量动画特效。
  • 弧形花架详图

    2014-04-01 16:25:17
    弧形花架详图 做法施工
  • BxArcProgressBar:android 自定义 弧形等级进度条,参考项目【弧形的拖动条进度控件】https://github.com/jenly1314/ArcSeekBar,https://gitee.com/jenly1314/ArcSeekBar,含源码,apk,截图
  • 自定义弧形仪表盘

    2015-11-28 11:17:33
    java android 自定义的弧形仪表盘,可以根据角度偏移设置百分比的进度

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,414
精华内容 5,365
关键字:

弧形