Android实现工作管理甘特图效果

本文介绍如何在Android中实现工作管理的甘特图效果,利用HorizontalScrollView和ScrollView进行左右上下滑动,并通过代码添加进度条及设置相关属性。提供核心代码示例和源码下载链接。
摘要由CSDN通过智能技术生成

利用现成的控件实现(很多时候会误以为要自定义控件,所以我放到了,自定义目录下)
效果图:
在这里插入图片描述
思路:
左右滑动使用
HorizontalScrollView
上下滑动使用
ScrollView
然后使用代码添加进度条,并设置各种属性

核心代码:
GanteActivity中

package com.zhh.android;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class GanteActivity extends Activity {
    private Context context;
    private LinearLayout llprogress;
    private LinearLayout llshijian;
    //  设置表示1天的宽度
    private int dayWidth;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gante);
        context = GanteActivity.this;
//      单位是px
        dayWidth = getPinMuWidth()/7;
//      根据返回的天数判断,大于多少天*时间轴的长度  就是向左的距离
//      进度条的长度就是,任务天数*时间周的长度,就是进度条的总长度
        llshijian = (LinearLayout) findViewById(R.id.llshijian);
        llprogress = (LinearLayout) findViewById(R.id.llprogress);
        addTextView();


        List<MyTask> listTask = listMyTask();
        for (int i = 0; i < listTask.size(); i++) {
//         添加进度条
            addProgress(listTask.get(i).startTask, listTask.get(i).endTask,listTask.get(i).jindu);
        }
    }

    /**
     * 添加TextView的方法
     * 添加时间
     */
    private void addTextView() {
        for (int i = 0; i < getTimeData().size(); i++) {
//          设置textView 并添加到 布局中
            TextView textView = new TextView(context);
            llshijian.addView(textView);

            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) textView.getLayoutParams();
            params.width = dayWidth;
            params.height = dip2px(context, 45);
            // params.leftMargin = dip2px(context, 1);
            // params.setMargins(dip2px(MainActivity.this, 1), 0, 0, 0); // 可以实现设置位置信息,如居左距离,其它类推
            // params.leftMargin = dip2px(MainActivity.this, 1);
            textView.setLayoutParams(params);
            textView.setGravity(Gravity.CENTER);//居中
            textView.setText(getTimeData().get(i) + "");
//            textView.setBackgroundColor(getResources().getColor(R.color.blue));
            textView.setBackgroundResource(R.mipmap.xhdpi);
        }

    }

    private List<String> getTimeData() {
        List<String> list = new ArrayList<>();
        list.add("12.1"
Delphi7是一种编程语言和集成开发环境,可以帮助开发人员创建Windows应用程序。要实现甘特图效果,可以按照以下步骤进行: 1. 创建一个新的Delphi项目。在主窗体上放置一个TStringGrid控件。StringGrid可以用于创建一个类似于电子表格的数据表。 2. 在StringGrid上设置列标题,包括项目名称、开始日期、结束日期等相关信息。 3. 再添加几行数据,每一行表示一个任务或项目。填充每个项目的名称、开始日期和结束日期。 4. 在主窗体上添加一个TShape对象,用于绘制甘特图的条形。 5. 在StringGrid上添加一个选中行的事件处理程序。当用户选择一行时,可以获取该项目的开始日期和结束日期。 6. 在TShape上绘制甘特图条形。可以使用TShape的Canvas属性进行绘制,例如使用矩形函数(TCanvas.Rectangle)。 7. 在绘制之前,需要将日期转换为像素值,以确保甘特图在适当的位置上绘制。可以使用TGridRect函数来获取StringGrid中指定单元格的位置。 8. 使用开始和结束日期来计算条形的宽度,并将矩形绘制在TShape上。可以为TShape设置颜色或其他样式。 9. 重复上述步骤,为每个项目都绘制条形。 10. 运行程序,将会看到每个项目的甘特图条形在StringGrid上绘制。 这是一个基本的实现甘特图效果的方法。根据需要,你可以根据Delphi的其他功能和第三方组件来进行扩展和美化。希望这些步骤可以帮助你实现甘特图效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值