![](/img/trans.png)
[英]How to make my simple activity as floating activity in android-studio?
[英]How do you draw a simple redrawable rectangle in Java/Android-Studio?
我在Java和Android Studio中非常菜鸟,而且我找不到绘制矩形的好方法。 为什么Java必须这么难? 我的main_activity中有一个打开新活动的按钮。 这个:
package com.example.marty.pongtest;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
public class GamePanelSingle extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_game_panel_single);
}
public class drawRectangle extends View{
public drawRectangle(Context context){
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect paddle = new Rect();
paddle.set(0, 0, canvas.getWidth()/2, canvas.getHeight()/2);
Paint white = new Paint();
white.setColor(Color.WHITE);
white.setStyle(Paint.Style.FILL);
canvas.drawRect(paddle,white);
}
}
我的Xml代码:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="GameSinglePlayer"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="55dp"
android:layout_marginStart="55dp"
android:layout_marginTop="22dp"
android:textColor="#FFFFFF" />
为什么不起作用,如何使它起作用?
谢谢..
简单的和平:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
//Draw something
canvas.restore();
}
请粘贴您的布局xml。 而且,如果只想显示一个矩形,则只需在drawable文件夹中定义一个矩形形状,然后在您的布局中引用它即可,而无需Java代码。
理解您的代码并不容易。 它没有很好地编程。 首先,请用大写字母写课程名称。 其次,不要调用诸如DrawRectangle之类的类。 它不是一种方法。 类是您生成的实例的模式。 一个更好的名字是Drawer / Brush或类似的东西。 因为每个查看您的代码并阅读drawRectangle的人都认为这必须是一种方法。 但是:一旦我实现了一个小的活动,即用线连接的矩形网组成一个小活动。 这是我如何做到的简单结构。 我尽量减少了代码。 这很容易画出一些野线:
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import java.util.ArrayList;
import java.util.List;
public class ZoomView extends View{
private float mPosX = 0;
private float mPosY = 0;
Context context;
Paint red;
public ZoomView(Context context) {
super(context);
this.context = context;
init();
}
public ZoomView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
}
public ZoomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
init();
}
public void init(){
red = new Paint();
red.setColor(getResources().getColor(R.color.accent));
red.setAntiAlias(true);
red.setStrokeWidth(3);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(mPosX, mPosY);
drawLines(canvas);
canvas.restore();
}
public void drawLines(Canvas canvas){
canvas.drawLine(50, 0, 50, -175, red);
canvas.drawLine(50, 25, 50, 200, red);
canvas.drawLine(50, 250, 200, 350, red);
canvas.drawLine(50, 250, -100, 350, red);
canvas.drawLine(-150, 375, -300, 375, red);
canvas.drawLine(-100, 400, -100, 550, red);
canvas.drawLine(0, -175, -100, -50, red);
canvas.drawLine(100, -175, 200, -50, red);
canvas.drawLine(-100, -300, 0, -175, red);
canvas.drawLine(100, -175, 200, -300, red);
canvas.drawLine(50, -200, 50, -375, red);
canvas.drawLine(-100, 600, -100, 750, red);
canvas.drawLine(-100, 600, -250, 700, red);
canvas.drawLine(-100, 600, 50, 700, red);
canvas.drawLine(200, 400, 200, 575, red);
canvas.drawLine(225, 375, 425, 375, red);
canvas.drawLine(-150, -25, -300, -25, red);
canvas.drawLine(-100, 0, -250, 100, red);
canvas.drawLine(-350, 0, -500, 100, red);
canvas.drawLine(-350, -25, -550, -25, red);
canvas.drawLine(-350, -50, -500, -150, red);
canvas.drawLine(250, -25, 400, -25, red);
canvas.drawLine(200, -50, 350, -150, red);
canvas.drawLine(200, 0, 350, 100, red);
canvas.drawLine(250, -325, 400, -325, red);
canvas.drawLine(200, -350, 350, -450, red);
canvas.drawLine(500, -325, 650, -325, red);
canvas.drawLine(450, -300, 600, -200, red);
canvas.drawLine(50, -400, 125, -600, red);
canvas.drawLine(50, -400, -25, -600, red);
canvas.drawLine(50, -400, -100, -500, red);
canvas.drawLine(50, -400, 200, -500, red);
canvas.drawLine(-100, -300, -250, -200, red);
canvas.drawLine(-150, -325, -300, -325, red);
canvas.drawLine(-100, -350, -250, -450, red);
}
}
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<XXX.XXX.XXX.ZoomView
android:id="@+id/zoomView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
如何在需要的地方使用这样的TextView:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:orientation="horizontal">
<TextView
android:layout_width="10dp"
android:layout_height="20dp"
android:background="@color/light_green"/>
</LinearLayout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.