Android应用程序未像在Android Studio中一样显示在设备上

用户名

我正在尝试制作一个显示以下图像的程序:

所需的外观

该图像来自Android Studio上“显示”窗口中用于我尝试显示的活动的XML文件。该窗口包括两个片段,尽管现在只有其中一个具有可见元素。

但是,当在android设备上运行程序时,我只有一个空白屏幕,没有任何我一直在片段中编程的可见对象或功能。不过,我仍然在顶部获得该活动的标题。

应该出现的是底部的两个图标(这是来自ToolbarFragment的两个图像按钮),以及一个由DrawingFragment的画布对象占用的空白区域。我还不确定如何绘制画布,但是至少应该出现按钮。

我认为这与XML文件或活动本身有关,因此我在下面提供了它们的代码。您能提供的任何帮助将不胜感激。

DrawingActivity.java

package com.example.chris.drawingtest;

import android.app.Activity;
import android.util.Log;


public class DrawingActivity extends Activity
    implements ToolbarFragment.ToolSelectionListener {

    public void sendNewValue(int newValue) {
        Log.i("Data received from Toolbar Fragment: ", "The ID of the button pressed is " + newValue);
    }
}

activity_drawing.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="bottom"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".com.example.chris.drawingtest.DrawingActivity">

    <fragment
        android:name="com.example.chris.drawingtest.DrawingFragment"
        android:id="@+id/Drawing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_drawing"
    />

    <fragment
        android:name="com.example.chris.drawingtest.ToolbarFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Toolbar"
        tools:layout="@layout/fragment_toolbar"
    />

</LinearLayout>

编辑:添加了片段代码。

ToolbarFragment.java

package com.example.chris.drawingtest;

import android.app.Activity;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;

import com.example.chris.drawingtest.R;

/**
 * Created by Chris on 11/28/2014.
 */
public class ToolbarFragment extends Fragment {

    ToolSelectionListener mCallback;

    public interface ToolSelectionListener {
        public void sendNewValue(int newValue);
    }

    public void clicked(ImageButton imageButton) {
        mCallback.sendNewValue(imageButton.getId());
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_toolbar, container, false);
    }

    private ImageButton pencilButton = (ImageButton) getActivity().findViewById(R.id.pencil);
    private ImageButton eraserButton = (ImageButton) getActivity().findViewById(R.id.eraser);


}

DrawingFragment.java

package com.example.chris.drawingtest;

import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;

import com.example.chris.drawingtest.R;

/**
 * Created by Chris on 11/28/2014.
 */
public class DrawingFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_drawing, container, false);
    }

    private class DrawView extends View {

        private Path drawpath = new Path();
        private Paint drawpaint = new Paint();
        private Paint canvaspaint;
        private Canvas drawcanvas;
        private Bitmap canvasBitmap;

        private int paintColor = 0xFF000000;    //opaque black for pencil

        public DrawView(Context context) {
            super(context);
            drawpaint.setColor(paintColor);

            drawpaint.setStrokeWidth(10);
            drawpaint.setStyle(Paint.Style.STROKE);
            drawpaint.setStrokeJoin(Paint.Join.ROUND);
            drawpaint.setStrokeCap(Paint.Cap.ROUND);

            canvaspaint = new Paint(Paint.DITHER_FLAG);
        }

        protected void OnSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w,h,oldw,oldh);

            canvasBitmap = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
            drawcanvas = new Canvas(canvasBitmap);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            drawcanvas.drawBitmap(canvasBitmap,0,0,drawpaint);
            canvas.drawPath(drawpath, drawpaint);
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            float touchX = event.getX();
            float touchY = event.getY();

            switch(event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    drawpath.moveTo(touchX,touchY);
                    break;
                case MotionEvent.ACTION_MOVE:
                    drawpath.lineTo(touchX,touchY);
                    break;
                case MotionEvent.ACTION_UP:
                    drawcanvas.drawPath(drawpath, drawpaint);
                    drawpath.reset();
                    break;
                default:
                    return false;
            }
            invalidate();
            return true;
        }

    }

   Integer value = 0;

}
德里克MC

我可能是错的,但是否不应该将activity_drawing.xml附加到DrawingActivity.java?看来activity_drawing.xml没有链接到任何东西。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drawing);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

强制Flutter Android应用程序像在iOS设备上一样运行

像在Android中一样在Windows 10中清除应用程序数据

Android:如何像在Android Studio中进行调试一样获取应用程序的日志?

如何像在Inbox应用中一样在同一个FloatingActionButton上隐藏/显示不同的动作

使本地 Symfony 2.8 应用程序表现得像在生产环境中一样

键盘处理就像在iOS 7中的消息应用程序中一样

像在Facebook iOS 7应用程序中一样获得漂亮的深色UIToolbar模糊

如何使添加和编辑按钮像在警报应用程序中一样

在 XFCE 中像在 GNOME 中一样拥有应用程序概述

像在Twitter App中一样显示相机胶卷?

如何像在Eclipse中一样在Android Studio中复制错误

Visual Studio C++ - 像在 Eclipse 中一样在鼠标悬停时显示功能代码

如何在操作栏选项卡上添加搜索视图,就像在Play商店应用程序中一样

使alt / option键像在所有其他应用程序中一样工作

将编辑文本高度增加到 5 行,就像在 whats 应用程序中一样

如何在应用程序中显示推送通知,就像在通知活动中显示instagram一样

应用程序栏未在Android Studio中显示,但在实际的android设备上显示

C#如何像在插槽(WPF)中一样使图像在Y轴上移动

像在iOS中一样滑动以在ListView中显示按钮

如何像在Vue中一样在Alpine.JS中添加显示过滤器?

是否可以像在 HTML 中一样在 Flutter 中突出显示文本?

在IBM z中是否像在IBM i中一样显示文件(dspf)?

WPF如何像在ComboBox中一样在DataGrid的TextBlock中显示关系数据

ag-Grid - 在行悬停时显示按钮,就像在 Gmail 中一样

配置MSBuild.exe CLI生成以像在Visual Studio生成中一样逐步运行

如何使选项卡控件看起来像在Visual Studio中一样

设备上的android studio调试在应用程序列表上显示2个应用程序图标

设备上的Android应用程序

如何使 XFCE 面板上的图标像在 Windows 中一样工作?