利用现成的控件实现(很多时候会误以为要自定义控件,所以我放到了,自定义目录下)
效果图:
思路:
左右滑动使用
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"