初识Android studio与简单项目实践

据老师说,Android studio 是要比eclipse Android运行速度和更方便的一个安卓开发软件,但是自带的安卓模拟器却是没有如genymotion之类的安卓模拟器运行速度要快的;
使用软件当然要从安装软件开始;
安装这个软件都是一个技术活,因为都是英文,点错一个东西就可能导致安装失败;很多人在安装的时候习惯性就是点下一步下一步下一步,安装选择安装软件还有安卓模拟器,然而这个软件的安装非常大,还特别占内存,所以在选择安装路径的时候选择最好不要放在C盘里面,最好创建一个文件夹在D盘或者其他盘,然后把软件,JDK都放在一个文件夹,这样为了后面选择jdk路径更好找。
为了安装一个软件我们班上的同学花费了两个下午加上一个晚上的时间。。这就很无奈了。
相比同班同学重新安装个四五遍都没有安装成功的,我要幸运的多,遇到的问题不是很大,安装成功,就是后面要运行安卓模拟器的时候出现了一个错误:
Intel HAXM is required to run this AVD,vt-X is disabled in BIOS;
中文意思就是:Intel HAXM需要运行这个AVD,vt - x在BIOS中是禁用的;
我找了下网上的解决办法就是在开机的时候按f2键进入到BIOS界面,在configurations 中找到Intel virtualization technology 将其设置成enabled然后重启电脑打开Avd 就可以使用了;

然后来说说使用第一天来使用Android studio 的感受,个人感觉使用的界面呢比eclipse要复杂的多,可能是因为不习惯或许是功能更多的原因;然后它的联想功能反应速度更快,就是比如写一个方法的话,写出一两个字母就会出现很多的方法名列表。还有好多快捷键和eclipse的是很不一样的,或者说是功能相反的。

今天上午老师带我们使用Android studio 的模拟器输出一句话,并且实现有字体的大小还有颜色。小小的一个功能就要写很长的代码,这时候我就觉得好崩溃啊,还有一大堆见都没有见过的英文单词,代表不同的方法。我就是纯粹就是照着老师写的自己再写一遍,和我当初学习JAVA 一样。而且一些实现功能的方法很难理解,所以什么都没有学到;

下面是实现输出两个单词,有不同的颜色,还有获取系统时间的方法:

//这是编写方法的类
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback{
    private Canvas canvas;
    private Paint paint;
    private SurfaceHolder sufaceHolder;
    public MySurfaceView(Context context){
        super(context);
        //初始化sufaceHolder
        sufaceHolder=this.getHolder();
        //添加回调函数
        sufaceHolder.addCallback(this);
        paint=new Paint();//创建画笔,画笔对象实例化
        paint.setColor(Color.RED);//设置颜色
        paint.setTextSize(100);//设置字体大小
        paint.setAntiAlias(true);//取消锯齿
    }


    @Override
    public void surfaceCreated(SurfaceHolder holder) {
new Thread(new Runnable() {
    @Override
    public void run() {
           while(true){
               myDram();
           }
    }
}).start();
    }
private  void myDram(){

    //canvas进行锁定
    canvas=sufaceHolder.lockCanvas();
    canvas.drawText("hello",100,200,paint);
    paint.setColor(Color.BLUE);
    canvas.drawText("world",100,400,paint);
    //获取当前时间-毫秒
    long millis=System.currentTimeMillis();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date=sdf.format(millis);
    canvas.drawText(date,100,600,paint);
if(canvas!=null){
    //解锁画布,呈现到视图窗口
    sufaceHolder.unlockCanvasAndPost(canvas);
}
}
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {

    }
}

还有就是一个飞机大战简单界面的代码;然而我也是没有理解到。因为本来Java基础就差,自己的编程能力就差,对代码功能不是很理解;
飞机大战开始游戏界面

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Button;

/**
 * Created by asus on 2017/5/24.
 */

public class GameSurface extends SurfaceView implements SurfaceHolder.Callback {

    private SurfaceHolder surfaceHolder;
    private Canvas canvas;
    private Paint paint;
    private Button btn1 = null;


    public static int screenWidth;
    public static int screenHight;

    //Menu相关
    private GameMenu gamemenu;
    private Bitmap bmpMenuBG;
    private Bitmap bmpLogo;
    private Bitmap bmpButton;
    private Bitmap bmpText;

    public GameSurface(Context context) {
        super(context);
        surfaceHolder = this.getHolder();
        surfaceHolder.addCallback(this);
        paint = new Paint();
        paint.setAntiAlias(true);

    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        screenWidth = this.getWidth();
        screenHight = this.getHeight();
        initBitmap();

        new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        myDraw();
                    }


                }
        ).start();

    }


    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {

    }

    //绘图方法
    private void myDraw() {
        canvas = surfaceHolder.lockCanvas();
        //
        gamemenu.draw(canvas, paint);

        if (canvas != null) {
            surfaceHolder.unlockCanvasAndPost(canvas);
        }
    }

    private void initBitmap() {
        bmpMenuBG = BitmapFactory.decodeResource(this.getResources(), R.drawable.mainmenu);
        bmpLogo = BitmapFactory.decodeResource(this.getResources(), R.drawable.logo);
        bmpButton = BitmapFactory.decodeResource(this.getResources(), R.drawable.menustart);
        bmpText = BitmapFactory.decodeResource(this.getResources(), R.drawable.starttext);

        gamemenu = new GameMenu(bmpMenuBG, bmpLogo, bmpButton, bmpText);
    }
}

下面是功能的实现的代码:

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;

/**
 * Created by asus on 2017/5/24.
 */

public class GameMenu {
    private Bitmap bmpMenuBG;
    private Bitmap bmpLogo;
    private Bitmap bmpButton;
    private Bitmap bmpText;
    private Rect rec1,rect2;

    public GameMenu(Bitmap bmpMenuBG,Bitmap bmpLogo,Bitmap bmpButton,Bitmap bmpText){
        this.bmpMenuBG = bmpMenuBG;//菜单页面背景图片
        this.bmpLogo=bmpLogo;//菜单页面Logo
        this.bmpButton=bmpButton;//菜单页面Button
        this.bmpText=bmpText;//菜单页面文本

        rec1=new Rect(0,GameSurface.screenHight/3,GameSurface.screenWidth,
                GameSurface.screenHight/3+GameSurface.screenHight/5);
        rect2=new Rect(0,0,GameSurface.screenWidth,GameSurface.screenHight);

    }

    /*
     *  画菜单页面
     */
    public void draw(Canvas canvas, Paint paint){
        //画背景图
        canvas.drawBitmap(bmpMenuBG,null,rect2,paint);
        canvas.drawBitmap(bmpLogo,null,rec1,paint);

        int x1=GameSurface.screenWidth/2-bmpButton.getWidth()/2;
        int y1=GameSurface.screenHight/3*2;

        canvas.drawBitmap(bmpButton,x1,y1,paint);

        int x2=GameSurface.screenWidth/2-bmpText.getWidth()/2;
        int y2=GameSurface.screenHight/3*2;
        canvas.drawBitmap(bmpText,x2,y2,paint);


    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值