Category Archives: Android

Android开发实战小游戏“1秒OneSecond”,适合新手训练

1、先上图看下效果

2、基本需求
2.1、玩家凭个人感觉长按点击区域,大概1秒时松开,系统会检测本次时间;
2.2、如果时间误差在0.1秒内(超过0.1秒或差0.1秒)均记录“大神”1次,否则记录“凡人”1次;
2.3、“大神”1次以红色显示,突出效果;

3、主要技术点
3.1、相对布局加线性布局,整体使用相对布局,中间按钮部分使用线性布局;
3.2、中间长按区域不是按钮,是一个布局(可以看成是一个View),并且绑定onTouch事件;
3.3、普通View要实现Touch事件必须加上属性android:clickable=”true”,否则只能TouchDown,其他均无法响应;
3.4、“按钮”上有两行文字,必要的时候只显示一行,2行时平分,1行是居中;
3.5、android:visibility=”xxx”,xxx有三个枚举值分别为:gone、visible、invisible;[……]

继续阅读

Android实战开发小游戏BullsEye,初学者基本控件练习Demo

1、上图,先上图再BB

2、设计说明
2.1、游戏中随机给了一个数字,玩家在一个进度条中凭自己的感觉调出该数字;
2.2、点击确定后,游戏根据玩家调整出的精度给出一个分数,越吻合分数越高;
2.3、附带一个计分与复位功能,一个帮助的弹框;

3、主要技术点
3.1、基本布局,将手机屏幕分割为上中下三大块纵向布局,每一个小格中再根据需要进行纵身或横向布局,如下图所示

3.2、对于初学者来讲,布局中值得一提的有gravity与layout_gravity这两个属性,layout_gravity对其内部子控件生效,而gravity对自身生效;
3.3、比如android:gravity:center_horizontal,表示当前控件水平居中,但前提条件是该控件是被纵向布局的,如果该控件本身是被横向布局的,那么横向到底有多长是未知的,从而设置也就无效;如果该控件是纵向布局的,那居中表示的肯定就是横向居中;[……]

继续阅读

Android自定义View通过触摸事件移动View的位置

1、上图给吃瓜群众

这个安卓小机器人是可以通过触摸屏幕而跟着你手指动的!!

2、Demo基本设计思路
2.1、自定义一个GameView继承自View;
2.2、在View上绘制一个Bitmap对象,后续会通过触摸事件来改变该图的位置;
2.3、监听Activity的onTouchEvent事件,将事件发生的坐标传递给自定义View;
2.4、自定义View中通过接收到的坐标位置,实时改变Bitmap所处的位置,实现类型移动某对象的功能;

3、关键代码
3.1、自定义View:GameView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.yusian.event.game;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
 
/**
 * Created by Sian on 2017/3/8.
 */
 
public class GameView extends View {
 
    Bitmap bitmap = null;
    private float bitmapX, bitmapY;
 
    public void setBitmapPoint(float x, float y){
        this.bitmapX = x;
        this.bitmapY = y;
        // 使用View的invalidate()方法刷新页面,使之调用onDraw()方法
        this.invalidate();
    }
 
    // 希望在XML布局文件中添加控件,实现该构造方法
    public GameView(Context context, AttributeSet attrs){
        super(context, attrs);
        // 取出图片id
        int id = com.yusian.event.R.mipmap.ic_launcher;
        // 使用BitmapFactory的静态方法decodeResoure()生成Bitmap图片
        // view的getResource()方法可取到当前资料包
        bitmap = BitmapFactory.decodeResource(getResources(), id);
    }
 
    @Override
    // 页面创建或被刷新时被调用
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 画布上绘制一个位图
        canvas.drawBitmap(bitmap, bitmapX, bitmapY, null);
    }
}

3.2、XML[……]

继续阅读

Android触屏事件简单处理与实现

1、上图,无图无真相

2、Demo基本设计原理
2.1、监听屏幕的触摸事件,将当前事件发生的坐标打印在TextView上;
2.2、判断不同的触摸事件类型,改变TextView的背影色;
2.3、实现本身很简单,对于初学者来讲是一步积累,代码中有相对应注释说明;

3、关键代码
XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.yusian.even.MainActivity">
 
    <textview
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:layout_margin="20dp"
        android:layout_gravity="center_horizontal"></textview>
 
</linearlayout>

[……]

继续阅读

Android基础控件RadioGroup|Button|TextView|ImageView及事件处理综合使用

1、上图,无图无真相

2、Demo设计
2.1、模拟游戏当中的配置文件,将相关选项数据保存或打印出来;
2.2、创建三组RadioGroup、一组ImageView、一个按钮、一个用于输出的TextView;
2.3、RadioGroup与Button的事件接口由当前Activity实现;
2.4、相关方法与代码实现已都写在代码注释当中;
2.5、页面布局使用线性布局嵌套实现;

3、关键代码[……]

继续阅读