⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shapedrawable1.java

📁 android 例子中的确良ApiDemos。很有代表意义
💻 JAVA
字号:
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.apis.graphics;import com.example.android.apis.R;import android.app.Activity;import android.content.Context;import android.graphics.*;import android.graphics.drawable.Drawable;import android.graphics.drawable.ShapeDrawable;import android.graphics.drawable.shapes.*;import android.os.Bundle;import android.view.KeyEvent;import android.view.*;public class ShapeDrawable1 extends GraphicsActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(new SampleView(this));    }        private static class SampleView extends View {        private ShapeDrawable[] mDrawables;                private static Shader makeSweep() {            return new SweepGradient(150, 25,                new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0xFFFF0000 },                null);        }                private static Shader makeLinear() {            return new LinearGradient(0, 0, 50, 50,                              new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF },                              null, Shader.TileMode.MIRROR);        }                private static Shader makeTiling() {            int[] pixels = new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0};            Bitmap bm = Bitmap.createBitmap(pixels, 2, 2,                                            Bitmap.Config.ARGB_8888);                        return new BitmapShader(bm, Shader.TileMode.REPEAT,                                        Shader.TileMode.REPEAT);        }                private static class MyShapeDrawable extends ShapeDrawable {            private Paint mStrokePaint = new Paint(Paint.ANTI_ALIAS_FLAG);                        public MyShapeDrawable(Shape s) {                super(s);                mStrokePaint.setStyle(Paint.Style.STROKE);            }                        public Paint getStrokePaint() {                return mStrokePaint;            }                        @Override protected void onDraw(Shape s, Canvas c, Paint p) {                s.draw(c, p);                s.draw(c, mStrokePaint);            }        }                public SampleView(Context context) {            super(context);            setFocusable(true);            float[] outerR = new float[] { 12, 12, 12, 12, 0, 0, 0, 0 };            RectF   inset = new RectF(6, 6, 6, 6);            float[] innerR = new float[] { 12, 12, 0, 0, 12, 12, 0, 0 };                        Path path = new Path();            path.moveTo(50, 0);            path.lineTo(0, 50);            path.lineTo(50, 100);            path.lineTo(100, 50);            path.close();                        mDrawables = new ShapeDrawable[7];            mDrawables[0] = new ShapeDrawable(new RectShape());            mDrawables[1] = new ShapeDrawable(new OvalShape());            mDrawables[2] = new ShapeDrawable(new RoundRectShape(outerR, null,                                                                 null));            mDrawables[3] = new ShapeDrawable(new RoundRectShape(outerR, inset,                                                                 null));            mDrawables[4] = new ShapeDrawable(new RoundRectShape(outerR, inset,                                                                 innerR));            mDrawables[5] = new ShapeDrawable(new PathShape(path, 100, 100));            mDrawables[6] = new MyShapeDrawable(new ArcShape(45, -270));                        mDrawables[0].getPaint().setColor(0xFFFF0000);            mDrawables[1].getPaint().setColor(0xFF00FF00);            mDrawables[2].getPaint().setColor(0xFF0000FF);            mDrawables[3].getPaint().setShader(makeSweep());            mDrawables[4].getPaint().setShader(makeLinear());            mDrawables[5].getPaint().setShader(makeTiling());            mDrawables[6].getPaint().setColor(0x88FF8844);                        PathEffect pe = new DiscretePathEffect(10, 4);            PathEffect pe2 = new CornerPathEffect(4);            mDrawables[3].getPaint().setPathEffect(                                                new ComposePathEffect(pe2, pe));                    MyShapeDrawable msd = (MyShapeDrawable)mDrawables[6];            msd.getStrokePaint().setStrokeWidth(4);        }                @Override protected void onDraw(Canvas canvas) {                        int x = 10;            int y = 10;            int width = 300;            int height = 50;                        for (Drawable dr : mDrawables) {                dr.setBounds(x, y, x + width, y + height);                dr.draw(canvas);                                y += height + 5;            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -