首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SurfaceView示例

SurfaceView示例
EN

Stack Overflow用户
提问于 2017-11-22 18:51:21
回答 2查看 13.5K关注 0票数 5

所以我花了大约两天的时间来尝试得到一个可以工作的SurfaceView。我在网上关注的教程甚至在严格遵循的情况下也不起作用。我通常会得到一个全黑的屏幕。

为了帮助我自学它是如何工作的,我需要一个可以工作的SurfaceView程序。

我正在寻找一个在一个单独的类中生成SurfaceView的程序。我将非常感谢,如果有人能够张贴完整的代码(XML和Java)的SurfaceView程序,只是把整个屏幕变成红色或白色。

谢谢你的帮助!

(任何解释和代码都会很棒!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-22 19:03:53

尝试此链接

Ansroid SurfaceView Example

我遵循了这个教程的例子。它工作得很好。

编辑

SurfaceView的简单代码

布局xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <SurfaceView
        android:id="@+id/surfaceView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

Java活动代码

代码语言:javascript
运行
复制
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.SurfaceView;
import android.view.ViewGroup;
import android.view.WindowManager;

public class Main2Activity extends AppCompatActivity{


  SurfaceView surfaceView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
    //Method for making the activity full screen
    //With SurfaceView
    makeItFullScreen();
  }
  
  private void makeItFullScreen(){
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getSupportActionBar().hide();
    //Changing SurfaceView background color
    surfaceView.setBackgroundColor(Color.RED);

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    ViewGroup.LayoutParams videoLayoutParams = surfaceView.getLayoutParams();
    videoLayoutParams.width = displayMetrics.widthPixels;
    videoLayoutParams.height = displayMetrics.heightPixels;

    ViewGroup.LayoutParams videoParams = surfaceView.getLayoutParams();
    videoParams.width = displayMetrics.widthPixels;
    videoParams.height = displayMetrics.heightPixels;
  }

}

Edit2

如果您使用自定义SurfaceView,xml将如下所示。

代码语言:javascript
运行
复制
<customClassPackageName.CustomSurfaceViewClassName
    android:id="@+id/surfaceView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

活动中的代码

代码语言:javascript
运行
复制
  .......
  customClassPackageName.CustomSurfaceViewClassName surfaceView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    surfaceView = (customClassPackageName.CustomSurfaceViewClassName) findViewById(R.id.surfaceView);
    .......
票数 7
EN

Stack Overflow用户

发布于 2017-11-22 19:06:57

SurfaceView

在Android中,所有简单的布局视图都绘制在同一个GUI线程上,该线程也用于所有用户交互。因此,如果我们需要快速更新图形用户界面,或者如果渲染花费太多时间并影响用户体验,那么我们应该使用SurfaceView。

Android SurfaceView提供了一个嵌入在视图层次结构中的专用绘图界面。您可以控制此曲面的格式,但是,SurfaceView负责将曲面放置在屏幕上的正确位置。

检查此sample

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47432818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档