Android 满屏显示自定义的View,并进行移动

新建一个类,继承View

package com.topcrab.mygame;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
import android.view.WindowManager;

/**
 * Created by Administrator on 2017-07-24.
 */

public class GameView extends View {
    Bitmap bitmap;
    int mapwidth;
    int mapheight;

    public int getRunleft() {
        return runleft;
    }

    public void setRunleft(int runleft) {
        this.runleft = runleft;
    }

    private int runleft;

    public int getRuntop() {
        return runtop;
    }

    public void setRuntop(int runtop) {
        this.runtop = runtop;
    }

    private int runtop;

    public GameView(Context context, AttributeSet set) {
        super(context, set);
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.fly);
        mapheight = bitmap.getHeight();
        mapwidth = bitmap.getWidth();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawBitmap(bitmap, runleft-mapwidth/2, runtop-mapheight/2, null);
        super.onDraw(canvas);
    }
}

默认加载页面

package com.topcrab.mygame;

import android.app.Activity;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
    GameView gameView=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //屏幕无标题
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //全屏显示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        gameView=(GameView) findViewById(R.id.GameId);

        //获取屏幕宽度和高度
        WindowManager manager = this.getWindowManager();
        DisplayMetrics outMetrics = new DisplayMetrics();
        manager.getDefaultDisplay().getMetrics(outMetrics);
        int width = outMetrics.widthPixels;
        int height = outMetrics.heightPixels;
        //设置飞机初始状态时的位置
        gameView.setRuntop(height-100);
        gameView.setRunleft(width/2);

    }
    //屏幕触碰事件
    @Override
    public boolean onTouchEvent(MotionEvent event) {

        float left=event.getX();
        float top=event.getY();
        gameView.setRunleft((int)left);
        gameView.setRuntop((int)top);
        gameView.invalidate();
        return super.onTouchEvent(event);
    }
}

xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.topcrab.mygame.MainActivity">

    <com.topcrab.mygame.GameView
        android:id="@+id/GameId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
时间: 2024-08-27 14:10:14

Android 满屏显示自定义的View,并进行移动的相关文章

Android 全屏显示 and 取消标题栏

先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 <application android:icon="@drawable/icon" android:label="@string/app_name"

VMware Tools的简易安装---解决Ubuntu 14.10不能满屏显示问题

由于使用的VMware WorkStation是中文破解版,安装时又是简易安装,因此VMware Tools并没有安装上,导致Ubuntu 14.10在VMware中装上之后,并不能满屏显示,如图1所示.                                              图1 解决方法如下: 1.关闭Ubuntu 14.10. 2.虚拟机-->设置-->CD/DVD(SATA)-->连接中选择"使用ISO映像文件",点击后面的浏览按钮,选择VM

背景图片满屏显示

如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题听起来似乎很简单.但是很遗憾的告诉大家.不是我们想的那么简单.比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在css2.1之前是不能被修改的. 所以实际的结果是只能重复显示,所以出现了repeat,repeat-x,repeat-y,no-repeat这些属性.就是用来控制背景图片的显示的.所以一般用作背景图片的有2类: 1.是一整张大图,尺寸和区域大小刚好吻合 2.一个很小的条状图,通过repeat后,形成

css背景图片拉伸 以及100% 满屏显示

如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题听起来似乎很简单.但是很遗憾的告诉大家.不是我们想的那么简单. 比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在css2.1之前是不能被修改的.  所以实际的结果是只能重复显示,所以出现了repeat,repeat-x,repeat-y,no-repeat这些属性.就是用来控制背景图片的显示的.所以一般用作背景图片的有2类: 1.是一整张大图,尺寸和区域大小刚好吻合  2.一个很小的条状图,通过repeat后

关于Flash满屏显示的总结

1.Flash只能设置固定宽高,全屏的Flash通常宽高都符合一般的显示器分辨率 2.Flash满屏的方法:Flash的RESIZE事件捕捉舞台宽高,Flash发布设置"百分比+无缩放",HTML设置100%显示 3.Flash满屏失败的原因:Flash宽高大于通常显示器分辨率,使得Flash基于Flash player的比率缩放了原来的尺寸,导致多出了舞台. 4.Flash的显示错位和异常:原因出于IE版本和某些游览器的兼容性问题,Flash内的元素通常不会受到影响,此时可以通过HT

Android XML中引用自定义内部类view的四个why

今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类view的规则 本文主要是总结why,所以先把XML布局文件中引用内部类的自定义view的做法摆出来,有四点: 自定义的类必须是静态类: 使用view作为XML文件中的tag,注意,v是小写字母,小写字母v,小写字母v: 添加class属性,注意,没有带android:命名空间的,表明该自定义view

Android 全屏显示的方法(不包含状态栏)

我们都知道在Android中某些功能的实现往往有两种方法:一种是在xml文件中设置相应属性,另一种是用代码实现.同样Android实现全屏显示也可以通过这两种方法实现: 1.在AndroidManifest.xml的配置文件里面的<activity>标签添加属性: android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 2.在Activity的onCreate()方法中的super()和setContentVie

Android全屏显示

参考地址:http://www.cnblogs.com/-cyb/archive/2012/03/09/Android_FullScreen.html 1.//在onCreat方法中setContentView()之前插入 requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏 getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.Lay

Android全屏显示(代码实现)

// 去掉窗口标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注:写在activity里