Android开发经验谈Android控件Android自定义下载暂停功能

Android 能力图实现

2019-01-24  本文已影响20人  死磕自己

效果

国际惯例,效果奉上

Screenshot_1548296212_看图王.png

思路

  1. 首先确定的是所有的参数,三个画笔(画线,画图,画字)
  2. 确定画出的形状参数,几边形、几层图形(上图一共为4层显示)、最外圈的半径、每层图形的角度和半径就可以算出来了;
  3. 确定该如何画出点(也就是能力值)
  4. 最后绘制文字
  5. Tips: 好的封装可以实现自定义设置View的各种属性;

实现

 /**
     * 传入元数据
     *
     * @param data
     */
    public void setData(Object[] data) {
        if (data == null) {
            return;
        }
        this.allAbility = data;

        //View本身调用迫使view重画
        invalidate();
    }

    /**
     * 下面都是工具类,dp单位转px单位
     */
    public static int dp2px(Context c, float dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, c.getResources().getDisplayMetrics());
    }

    public static int sp2px(Context c, float sp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, c.getResources().getDisplayMetrics());
    }

    public static float dp2pxF(Context c, float dp) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, c.getResources().getDisplayMetrics());
    }

    public static float sp2pxF(Context c, float sp) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, c.getResources().getDisplayMetrics());
    }

使用

自定义View的功能实现完毕,那么就看看该怎么使用了;

<?xml version="1.0" encoding="utf-8"?>
<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">

    <com.example.administrator.abilityview.view.AibilitysView
        android:id="@+id/aibilitymapview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>
package com.example.administrator.abilityview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.administrator.abilityview.view.AibilitysView;

public class MainActivity extends AppCompatActivity {
    private AibilitysView aibilitymapview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.aibilitymapview = (AibilitysView) findViewById(R.id.aibilitymapview);
        aibilitymapview.setData(new Object[]{65, 70, 80, 70, 80, 80 });
    }
}

写在最后

欢迎大家评论吐槽,多给点建议,我会给大家解答的;跪谢!!!!
GitHUb 地址: https://github.com/sikeziji/AbilityView;希望大家可以去Star;感谢

上一篇 下一篇

猜你喜欢

热点阅读