編輯:關於Android編程
直接貼代碼:
ColorView.java
package com.xxx.demo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.WindowManager; /** * 色彩效果view1 */ public class ColorView extends View { int width; int height; Paint p; int i = 0; int all = 256 * 5;//顏色值變化 int exteraLength = 1; Context context = null; int j = 0; int mLength = 0;//每次重繪時j的增量值 public ColorView(Context context) { super(context); this.context = context; WindowManager wm = (WindowManager) getContext().getSystemService( Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); //判斷是否是標准的高度 System.out.println("width==" + width); System.out.println("height==" + height); p = new Paint(); if (all >= width) { mLength = 80; } else { mLength = 30; exteraLength = (int) Math.ceil(1.0 * all / (width - all)); } this.setFocusable(true); this.setKeepScreenOn(true); i = 0; } public ColorView(Context context, AttributeSet attributeSet) { super(context, attributeSet); this.context = context; WindowManager wm = (WindowManager) getContext().getSystemService( Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); System.out.println("width==" + width); System.out.println("height==" + height); p = new Paint(); p.setAntiAlias(true); p.setStyle(Paint.Style.FILL); if (all >= width) { mLength = 80; } else { mLength = 30; exteraLength = (int) Math.ceil(1.0 * all / (width - all)); } this.setFocusable(true); this.setKeepScreenOn(true); i = 0; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (j > all) { //結束的情況。還是需要繪制的,不然界面會變黑 myDraw(canvas); System.out.println("end"); return; } myDraw(canvas); j+=mLength;//改變j的值 invalidate();//onDraw後,重新繪制view,主觀上產生動畫效果 } public void myDraw(Canvas canvas) { // 創建畫筆 // 紅(R:255 G:0 B:0) // 橙(R:255 G:156 B:0) // 黃(R:255 G:255 B:0) // 綠(R:0 G:255 B:0) // 青(R: G:255 B:255) // 藍(R:0 G:0 B:255) // 紫(R:255 G: B:255) System.out.println("canvas"); Log.i("Canvas:X:", "complexdraw"); i = 0; while (i <= j) { if (i <= 255) { p.setColor(Color.rgb(255, i, 0)); } else if (i >= 256 && i <= 511) { p.setColor(Color.rgb(511 - i, 255, 0)); } else if (i >= 512 && i <= 767) { p.setColor(Color.rgb(0, 255, i - 512)); } else if (i >= 768 && i <= 1023) { p.setColor(Color.rgb(0, 1023 - i, 255)); } else if (i >= 1024 && i <= 1279) { p.setColor(Color.rgb(i - 1024, 0, 255)); } //處理不同的分辨率,造成畫圖的差異性,均分顏色值,屏幕寬度1280,顏色值的范圍也是1280剛剛好,如果是小米電視的,屏幕寬度為1920,多出來的,需要均分,下面便是處理方式 if (exteraLength != 1) { if (i % exteraLength == exteraLength - 1) { System.out.println("exteraLength==" + exteraLength); System.out.println("current==" + i); canvas.drawLine(i + i / exteraLength, 0, i + i / exteraLength, height, p);//畫線 canvas.drawLine(i + i / exteraLength + 1, 0, i + i / exteraLength + 1, height, p); } else { System.out.println("exteraLength==1--------->" + exteraLength); System.out.println("current==" + i); canvas.drawLine(i + i / exteraLength, 0, i + i / exteraLength, height, p); } } else { canvas.drawLine(i, 0, i, height, p); } i++; } } }
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_color); } }
序言自從谷歌在2014年的IO大會上推出了Material Design新的設計規范後,安卓應用的整體美觀程度提升了很大的一個層次, 安卓再也不是又黑又丑的界面,取而代之
打印機其實和Android沒有什麼大的關系,和linux內核關聯才是比較強的。最近調試打印機,有那麼一點心得,一點一點記錄下來。 最終的結果是要在Andro
寫在前面筆者近來在學習Android自定義View,收集了一些不算復雜但又“長得”還可以的自定義View效果實現,之前分享過兩個效果:一個水平的進
一.通知(Notification)的相關概念Notification是一種具有全局效果的通知,它展示在屏幕的頂端,首先會表現為一個圖標的形式,當用戶向下滑動的時候,展示