最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程之View簡單學習示例

 更新時間:2015年10月29日 15:08:32   作者:陽光島主  
這篇文章主要介紹了Android編程之View簡單學習示例,以一個實例形式較為詳細的分析了View的功能、定義及使用技巧,需要的朋友可以參考下

本文實例講述了Android編程之View簡單學習示例。分享給大家供大家參考,具體如下:

View,是Android的一個超類,這個類幾乎包含了所有的屏幕類型。每一個View都有一個用于繪圖的畫布,這個畫布可以進行任意擴展。

在游戲開發(fā)中葉可以自定義視圖(View),這個畫布的功能更能滿足我們在游戲開發(fā)中的需要。在Android中,任何一個View類都只需重寫onDraw 方法來實現(xiàn)界面顯示,自定義的視圖可以是復雜的3D實現(xiàn),也可以是非常簡單的文本形式等。

游戲的核心是不斷地繪圖和刷新界面,Android中提供了 invalidate 方法來實現(xiàn)界面刷新。注意,invalidate 不能直接在線程中調用, 就是不可以在子線程中調用,因此它違背了 Android的單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI 線程中執(zhí)行,因此Android中最常用的方法就是利用Handler來實現(xiàn)UI線程的更新。 其實用 AsyncTask 也可以。

具體示例:

Activity:

public class Activity01 extends Activity { 
  private static final String TAG = "mThread"; 
  private static final int REFRESH = 0x000001; 
  private GameView mGameView = null; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.mGameView = new GameView(this); 
    mGameView.x = 320.0f; 
    mGameView.y = 120.0f; 
    setContentView(mGameView); 
    new Thread(new GameThread()).start(); 
  } 
  Handler myHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case Activity01.REFRESH: 
        mGameView.invalidate();   // repaint View 
        break; 
      } 
      super.handleMessage(msg); 
    } 
  }; 
  class GameThread implements Runnable { 
    @Override 
    public void run() { 
      while (!Thread.currentThread().isInterrupted()) { 
        Message message = new Message(); 
        message.what = Activity01.REFRESH; 
        Activity01.this.myHandler.sendMessage(message); 
        try { 
          Thread.sleep(1000); 
        } catch (InterruptedException e) { 
          Thread.currentThread().interrupt(); 
        } 
      } 
    } 
  } 
  @Override 
  public boolean onTouchEvent(MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN){ 
      mGameView.x = event.getX(); 
      mGameView.y = event.getY(); 
    } 
    return true; 
  } 
  @Override 
  public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
      this.finish(); 
    } 
    return true; 
  } 
}

gameview:

public class GameView extends View { 
  int count = 0; 
  float x = 0, y = 0; 
  public GameView(Context context) { 
    super(context); 
  } 
  public void onDraw(Canvas canvas) { 
    if (count < 100) { 
      count++; 
    } else { 
      count = 0; 
    } 
    Paint mPaint = new Paint(); 
    switch (count % 4) { 
    case 0: 
      mPaint.setColor(Color.BLUE); 
      break; 
    case 1: 
      mPaint.setColor(Color.GREEN); 
      break; 
    case 2: 
      mPaint.setColor(Color.RED); 
      break; 
    case 3: 
      mPaint.setColor(Color.YELLOW); 
      break; 
    default: 
      mPaint.setColor(Color.WHITE); 
      break; 
    } 
    canvas.drawRect(x - 40, y - 20, x + 40, y + 20, mPaint); 
  } 
}

運行效果:

完整實例代碼代碼點擊此處本站下載。

希望本文所述對大家Android程序設計有所幫助。

相關文章

  • android,不顯示標題的方法小例子

    android,不顯示標題的方法小例子

    android,不顯示標題的方法小例子,需要的朋友可以參考一下
    2013-05-05
  • Android利用Service開發(fā)簡單的音樂播放功能

    Android利用Service開發(fā)簡單的音樂播放功能

    這篇文章主要介紹了Android利用Service開發(fā)簡單的音樂播放功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-04-04
  • Android結合kotlin使用coroutine的方法實例

    Android結合kotlin使用coroutine的方法實例

    這篇文章主要給大家介紹了關于Android結合kotlin使用coroutine的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Android Studio Gradle 更換阿里云鏡像的方法

    Android Studio Gradle 更換阿里云鏡像的方法

    這篇文章主要介紹了Android Studio Gradle 更換阿里云鏡像的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Android實現(xiàn)炫酷播放效果

    Android實現(xiàn)炫酷播放效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)炫酷播放效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android布局技巧之創(chuàng)建高效布局

    Android布局技巧之創(chuàng)建高效布局

    這篇文章主要為大家詳細介紹了Android布局技巧之創(chuàng)建高效布局,具有一定的實用性,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 20.5 語音合成(百度2016年2月29日發(fā)布的tts引擎)

    20.5 語音合成(百度2016年2月29日發(fā)布的tts引擎)

    編寫手機App時,有時需要使用文字轉語音(Text to Speech)的功能,比如開車時閱讀收到的短信、導航語音提示、界面中比較重要的信息通過語音強調
    2016-03-03
  • Android集成高德地圖詳細介紹

    Android集成高德地圖詳細介紹

    大家好,本篇文章主要講的是Android集成高德地圖詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • android指定DatePickerDialog樣式并不顯示年的實現(xiàn)代碼

    android指定DatePickerDialog樣式并不顯示年的實現(xiàn)代碼

    下面小編就為大家?guī)硪黄猘ndroid指定DatePickerDialog樣式并不顯示年的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-08-08
  • Android學習之介紹Binder的簡單使用

    Android學習之介紹Binder的簡單使用

    BInder方面的資料雖然感覺看的比較多,但是真正用的時候才發(fā)現(xiàn)有很多地方模棱兩棵的,所以,打算用一個實例再來鞏固一下binder的使用方法。這篇文章主要介紹了Android中Binder的簡單使用,文中給出詳細的示例代碼,需要的朋友可以參考下
    2016-12-12

最新評論

海原县| 靖宇县| 余姚市| 堆龙德庆县| 古浪县| 昭苏县| 河津市| 扎兰屯市| 喀喇沁旗| 万盛区| 岳池县| 固始县| 内黄县| 兰西县| 阜宁县| 尤溪县| 阿克| 宁南县| 定陶县| 抚顺市| 延长县| 申扎县| 陆良县| 兰考县| 克什克腾旗| 永仁县| 东方市| 永丰县| 崇文区| 醴陵市| 沁水县| 耒阳市| 刚察县| 根河市| 梁山县| 瓮安县| 上林县| 通渭县| 张北县| 祁门县| 呈贡县|