Android 白板制作

Android 白板制作,android,Android,嘿!! 我想制作一个白板应用程序,但我不知道如何只让一些像素变黑,而让其他像素变白。看看这个。 此外,您可能还需要一个web应用程序/服务,以便将屏幕内容传送给观众。这将有助于在白板上获得黑色像素: Scribbler.java: package org.yourpackage.scribble; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; public clas

嘿!! 我想制作一个白板应用程序,但我不知道如何只让一些像素变黑,而让其他像素变白。

看看这个。


此外,您可能还需要一个web应用程序/服务,以便将屏幕内容传送给观众。

这将有助于在白板上获得黑色像素:

Scribbler.java:

package org.yourpackage.scribble;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

public class Scribbler extends Activity {
    DrawView drawView;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        drawView = new DrawView(this);
        drawView.setBackgroundColor(Color.WHITE);
        setContentView(drawView);
        drawView.requestFocus();
        
    }
}
DrawView.java:

package org.yourpackage.scribble;

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

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class DrawView extends View implements OnTouchListener {
    List<Point> points = new ArrayList<Point>();
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);
        setFocusable(true);
        setFocusableInTouchMode(true);
        this.setOnTouchListener(this);
        paint.setColor(Color.BLACK);
    }

    @Override
    public void onDraw(Canvas canvas) {
        for (Point point : points) {
            canvas.drawCircle(point.x, point.y, 2, paint);  
        }
    }

    public boolean onTouch(View view, MotionEvent event) {
        Point point = new Point();
        point.x = event.getX();
        point.y = event.getY();
        points.add(point);
        invalidate();
        return true;
    }
}

class Point {
    float x, y;
}
package org.yourpackage.scribble;
导入java.util.ArrayList;
导入java.util.List;
导入android.content.Context;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnTouchListener;
公共类DrawView扩展了视图实现OnTouchListener{
列表点=新的ArrayList();
油漆=新油漆();
公共绘图视图(上下文){
超级(上下文);
设置聚焦(真);
setFocusableInTouchMode(真);
this.setOnTouchListener(this);
油漆。设置颜色(颜色。黑色);
}
@凌驾
公共空白onDraw(画布){
用于(点:点){
画布.画圈(点x,点y,2,绘画);
}
}
公共布尔onTouch(视图、运动事件){
点=新点();
point.x=event.getX();
point.y=event.getY();
点。添加(点);
使无效();
返回true;
}
}
类点{
浮动x,y;
}
AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.yourpackage.scribble"
      android:versionCode="1"
      android:versionName="1.0">
    <application>
        <activity android:name=".Scribbler">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="3" />
</manifest> 

…结果看起来像:


你可能想画线而不是像素-这只是给你一个线索

这是一个大问题,你能缩小一点吗。到目前为止你走了多远?你能给我们看一些代码吗?你只需要正确地推销它。白板Lite(不包括白板标记)不,我想自己编程。。。我想确定显示器的每个像素,当它被按下时,它应该改变颜色。。。对不起,我的英语这么差?public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);Canvas Canvas=new Canvas();Paint Paint Paint=new Paint();Paint.setColor(Color.WHITE);Canvas.drawPoint(20,20,Paint);}但是视图呢…请阅读我给你发的链接上的这部分。“要做到这一点:从droidnova复制整个代码,替换以下内容。”你知道视图如何知道油漆和convas在它们上面吗?PERFEKT!!!但我不明白的是,为什么新的观点知道油漆是“开着的”它?因为在Scribbler活动中,我们将我们的DrawView设置为活动内容-如果在该DrawView上发生了什么事情,我们将获得onTouch方法内的坐标,然后导致调用onDraw方法来绘制我们的像素-onDraw被自动调用,因为我们通过调用InvalidDate强制重新绘制视图()在onTouch中-您可以在该链接的“绘图”部分+1 DonGru中获得有关此行为的信息。当我在Nexus 7上使用时,使用2表示半径太小,因此我在canvas.drawCircle()上使用20