Android进阶学习

Stella981
• 阅读 298

效果图

Android进阶学习

1.这次就不使用attrs.xml文件了,属性都在代码写死了

2.代码:

package com.example.customview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.Shader.TileMode;
import android.util.AttributeSet;
import android.view.View;
public class MusicStroke extends View {
    
    private Paint            mPaint;
    private LinearGradient    mLinearGradient;
    private int                mNumber;
    private float            mWidth;
                            
    public MusicStroke(Context context) {
        this(context, null);
    }
    
    public MusicStroke(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    
    public MusicStroke(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
        canvas.drawColor(Color.WHITE);
        for (int i = 0; i < mNumber; i++) {
            canvas.drawRect(i * mWidth, (float) (Math.random() * getMeasuredHeight() * 1f), (i + 1) * mWidth,
                    getMeasuredHeight(), mPaint);
            /**
             * 画mNumber个矩形,模拟音乐数据变化的随机效果
             */
        }
        postInvalidateDelayed((long) (Math.random() * 300));
        /**
         * 重复调用onDraw方法,间隔为0-300毫秒
         */
    }
    
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        if (mWidth == 0) {
            mNumber = 30;
            mPaint = new Paint();
            
            mLinearGradient = new LinearGradient(0, 0, 0, getMeasuredHeight(),
                    new int[] { Color.parseColor("#ffbb33"), Color.RED, Color.parseColor("#ffbb33") }, null,
                    TileMode.CLAMP);
            mPaint.setShader(mLinearGradient);
            /**
             * 为矩形设置颜色渐变效果
             */
            
            mWidth = getMeasuredWidth() / mNumber;
            /**
             * mWidth是每个矩形的高度
             */
        }
    }
    
}

3.模型图:

Android进阶学习

4.布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.example.customview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >
    <com.example.customview.MusicStroke
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>
点赞
收藏
评论区
推荐文章
Easter79 Easter79
2年前
swing开发测试工具
要项目测试需要,使用swing编写个工具,给需要的人,留下代码:)界面如下:!(http://static.oschina.net/uploads/space/2016/1102/224313_1MMG_559291.png)用java写界面,真费事,使用delphi,分分钟的事情。特点:1、给JTextArea增加行数显示2、给
Easter79 Easter79
2年前
SVG绘制圆形简单示例分享
今天分享“svg绘制圆形”部分1、简单圆形效果图如下:!(http://static.oschina.net/uploads/space/2016/0223/221143_UhEK_2619189.png)关键代码:<svg xmlns"http://www.w3.org/2000/svg" version"1.1
Stella981 Stella981
2年前
SVG绘制圆形简单示例分享
今天分享“svg绘制圆形”部分1、简单圆形效果图如下:!(http://static.oschina.net/uploads/space/2016/0223/221143_UhEK_2619189.png)关键代码:<svg xmlns"http://www.w3.org/2000/svg" version"1.1
Wesley13 Wesley13
2年前
(适用于)ios 搜索标签列表 商城规格标签列表
效果图: 按钮黑色背景为不可交互 黄色为点击时候的效果 白色为默认颜色!(http://static.oschina.net/uploads/space/2016/0324/231202_f4IS_1186234.gif)h文件////  HomeTagView.h//  YangLand
Stella981 Stella981
2年前
AngularJS 学习笔记 (六) 基本概念和用法 之 Service与Provider
1、使用$http服务!(http://static.oschina.net/uploads/space/2016/0623/092916_7mPM_199513.gif)HTML代码:!(http://static.oschina.net/uploads/space/2016/0623/093044_Y
Stella981 Stella981
2年前
PhoneGap, JQuery 的第一个例子
  上周用PhoneGap和JQuery做了一个Android的例子。这个例子用来说明如何读取一个应用的配置文件。  开发环境的搭建就不在这里描述了。  先看一下代码布局:   !(http://static.oschina.net/uploads/space/2012/0312/143111_M4qy_145002.png)
Wesley13 Wesley13
2年前
IOS
还是实现如下布局!(http://static.oschina.net/uploads/space/2016/1101/113703_wHZ1_2886189.png)这次在StoryBoard里面,创建TableViewCell,并修改Identifier为cellname!(http://static.oschina.net/uplo
Easter79 Easter79
2年前
SVG绘制矩形简单示例分享
最近我初学HTML5,刚在一步步学习SVG,积累了一些个人心得和程序代码,希望和大家分享,今天分享“svg之矩形”部分1、简单矩形效果图如下:!(http://static.oschina.net/uploads/space/2016/0222/213915_Umuu_2619189.png)关键代码:<svg
Stella981 Stella981
2年前
SVG绘制矩形简单示例分享
最近我初学HTML5,刚在一步步学习SVG,积累了一些个人心得和程序代码,希望和大家分享,今天分享“svg之矩形”部分1、简单矩形效果图如下:!(http://static.oschina.net/uploads/space/2016/0222/213915_Umuu_2619189.png)关键代码:<svg
Stella981 Stella981
2年前
PHP+jQuery寥寥几行代码轻松实现百度搜索那样的无刷新PJAX的分页列表和导航链接
!(https://static.oschina.net/uploads/space/2016/1208/171419_U00R_561214.png)PHP寥寥几行代码轻松实现百度搜索那样的分页列表和导航链接,某些语言的拥趸哭晕在厕所.<?php$apparray('db_prefix''