Android 满屏显示自定义的View,并进行移动
2017-07-24 11:37
169 查看
新建一个类,继承View
默认加载页面
xml文件
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>
相关文章推荐
- Android 自定义 按当前view的宽高进行矩形移动内容图
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- IndicatorSeekBar:Android自定义View,滑动显示进度气泡指示器
- 《Android 群英传》读书笔记:自定义 View 之对现有控件进行拓展
- Android自定义View的移动
- Android中Webview使用自定义的javascript进行回调
- Android 自定义View可拖动移动位置及边缘拉伸放大缩
- 关于android使用design:25.1.0及以上包后,使用自定义behavivor(上拉隐藏,下拉显示)的view隐藏后不再显示的问题
- 完美解决Android的WebView加载失败(404,500),显示的自定义视图
- android自定义viewGroup 不显示问题
- android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
- [Android]自定义EmptyView列表数据为空显示
- Android中Webview使用自定义的javascript进行回调
- ViewPager嵌套RecycleView(Fragment作为数据源)来展示10条数据,每个Item显示的内容是(Android软件开发工程师)(用自定义的Adapter 实现
- Android 自定义View可拖动移动位置及边缘拉伸放大缩小 - Livingstone
- Android自定义TextView实现文字图片居中显示的方法
- Android自定义view圆并随手指移动
- Android TextView显示Html类解析的网页和图片及自定义标签用法示例
- Android中Webview使用自定义的javascript进行回调
- android中自定义WebView显示网页或本地html文件