android课程表的实现
//图片下方的码段主要实现了课程表所要显示的基本布局,采用ondraw的方法。
//别的内容可以根据自己兴趣添加,下面是本人做的,仅供参考。


package com.example.android_draw;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class Mydraw extends View {
private Paint paintlinev=new Paint();
private Paint paintlineh=new Paint();
private Paint paintjia=new Paint();
private Paint paintnumber=new Paint();
private Paint painttext=new Paint();
private Paint paintselect=new Paint();
private float mousex,mousey;
private static boolean initflag=false;
private static boolean onTouchEventflag=false;
private static int spacew=0;
private static int spaceh=0;
private static int[] result=new int[2];
private Bitmap tianjia;
private String
public Mydraw(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public Mydraw(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public Mydraw(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(!initflag){
init();
}
drawbackground(canvas);
if(onTouchEventflag){
drawrectangle1(canvas);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
mousex=event.getX();
mousey=event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(mousex>spacew){
result[0]=(int)((mousex-spacew)/(2*spacew));
onTouchEventflag=true;
}
result[1]=(int)(mousey/(spaceh));
break;
}
Mydraw.this.postInvalidate();
return true;
}
public void drawbackground(Canvas canvas){
canvas.drawLine(spacew, 0, spacew, 12*spaceh, paintlinev);
for(int i=1;i<13;i++){
canvas.drawText(i, spacew/2, spaceh*i*3/4, paintnumber);
}
for(int i=1;i<=12;i+=1){
canvas.drawLine(0, i*spaceh, spacew, i*spaceh, paintlineh);
}
for(int i=1;i<=12;i+=1){
for(int j=3;j<15;j+=2){
canvas.drawLine(j*spacew-2, i*spaceh, j*spacew+3, i*spaceh, paintlineh);
}
}
for(int i=1;i<=12;i+=1){
for(int j=3;j<15;j+=2){
canvas.drawLine(j*spacew, i*spaceh-2, j*spacew, i*spaceh+3, paintlinev);
}
}
}
private void drawrectangle1(Canvas canvas){
// Matrix matrix = new Matrix();
// matrix.preScale(space/tianjia.getWidth(), space/tianjia.getHeight(), result[0]*space, result[1]*space);
// canvas.drawBitmap(tianjia, matrix, paintjia);
canvas.drawBitmap(tianjia, result[0]*2*spacew+spacew, result[1]*spaceh,paintjia);
}
public void init(){
paintlineh.setColor(Color.BLACK);
paintlineh.setStrokeWidth(1);
paintlinev.setColor(Color.BLACK);
paintlinev.setStrokeWidth(1);
paintnumber.setColor(Color.BLACK);
paintnumber.setStrokeWidth(1);
tianjia=BitmapFactory.decodeResource(getResources(), R.drawable.tianjia);
int width=getWidth();
int height=getHeight();
spacew=width/15;
spaceh=height/12;
paintnumber.setTextSize((float) (0.75*height));
paintnumber.setTextAlign(Paint.Align.CENTER);
tianjia=BitmapFactory.decodeResource(getResources(), R.drawable.tianjia);
tianjia=Bitmap.createScaledBitmap(tianjia, 2*spacew, spaceh, false);
initflag=true;
}
}
android课程表的实现的更多相关文章
- android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码
Android精选源码 Android游戏2048 MVP Kotlin项目(RxJava+Rerotfit+OkHttp+Glide) Android基于自定义Span的富文本编辑器 android ...
- android选择器汇总、仿最美应用、通用课程表、卡片动画、智能厨房、阅读客户端等源码
Android精选源码 android各种 选择器 汇总源码 高仿最美应用项目源码 android通用型课程表效果源码 android实现关键字变色 Android ViewPager卡片视差.拖拽及 ...
- android五子棋游戏、资讯阅读、大学课程表、地图拖拽检测、小说搜索阅读app等源码
Android精选源码 Android 自动生成添加控件 android旋转动画.圆形进度条组合效果源码 一款很强的手机五子棋app源码 android地图拖拽区域检测效果源码 实现Android大学 ...
- 发布了Android的App,我要开源几个组件!
做了一款App,本来是毕业设计但是毕业的时候还没有做完,因为大部分时间都改论文去了,你们都懂的.现在毕业了在工作之余把App基本上做完了.为什么说基本上呢,因为我觉得还有很多功能还没实现,还要很多bu ...
- Android 实例子源代码文件下载地址380个合集
android 城市列表特效 - 触摸查找源码 .rar: http://www.t00y.com/file/64337887 android 日记系统源码(数据库的基本操作) .rar: htt ...
- GitHub 优秀的 Android 开源项目(转)
今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...
- Android 学习笔记之AndBase框架学习(五) 数据库ORM..注解,数据库对象映射...
PS:好久没写博客了... 学习内容: 1.DAO介绍,通用DAO的简单调度过程.. 2.数据库映射关系... 3.使用泛型+反射+注解封装通用DAO.. 4.使用AndBase框架实现对DAO的调用 ...
- Android Sqlite 实例入门
通过一个简单的例子来学习Sqlite,学生选课系统,一开始的需求是学生可以选课,选课完成后可以查询到已经选择的课. 首先设计三个表,学生,课程,选课.学生表存储学生的信息,课程表存储课程的信息,选课表 ...
- GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
随机推荐
- js 程序出发事件
<html> <head><title>Test</title></head> <body> <div id='divTe ...
- Android Studio工具修理集
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1.Common依赖项目找不到.因为主项目没有引进setting.gradle 2.从Eclipse ...
- 将数据导入hive,将数据从hive导出
一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...
- WPF自定义RoutedEvent事件示例代码
************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...
- link标签和script标签跑到body下面,网页顶部有空白
用UltraEdit的16进制编辑模式查看代码,都是EF BB BF开头的,说明都是带BOM的.我手动的将所有文件转成UTF-8 without BOM.页面终于正常了.link,script标签乖乖 ...
- The "Real" Project Plan
"I need a project plan by tomorrow morning." As project managers, that's what we hear. But ...
- imx6 uboot lvds clock
在uboot中添加logo,lvds接口的lcd显示不正常,出现波动.网上说是lvds时钟频率的问题. 使用示波器测量之后,发现频率是60M,而lcd最大频率才46.8M. 因此就需要更改uboot中 ...
- 由单例模式学到:lock锁
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. lock (xxx) { // Critical code section. } lock 关键字可确保当一 ...
- JBOSS安全配置
1.jmx-console登录的用户名和密码设置 默认情况访问http://localhost:8080/jmx-console就可以浏览jboss的部署管理的一些信息,不需要输入用户名和密码,使用起 ...
- C# 6.0的新变化
自动属性初始化 (Initializers for auto-properties) 以前我们是这么写的 为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写 只读属性的初始化(Getter-o ...