![](/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.