張家港java學(xué)習(xí)班哪個好_JAVA培訓(xùn)
¥詳詢
班制:周末班
蘇州其然軟件開發(fā)韓奇峰高級講師
多年實戰(zhàn)工作經(jīng)驗曾參與制作寶馬Usage Training項目、DMS項目,奧迪全 息投影項目,奔馳等多家汽車門戶行業(yè)大型項目,負(fù)責(zé)UI設(shè)計、界面設(shè)計、3D模型制作、前端開發(fā)等職務(wù)。
從事設(shè)計行業(yè)多年,精通PhotoShop、UI設(shè)計、AfterEffects、Flash、 Actionscript、HTML、CSS、JavaScript、jQuery、資深動畫設(shè)計師,設(shè)計作品曾獲得全國動畫設(shè)計三等獎。
課程講解注重實戰(zhàn)應(yīng)用,對講述知識點穿插案例制作,使課程內(nèi)容更加接近 工作中實際的項目。授課風(fēng)格注重實戰(zhàn)經(jīng)驗分析,深受學(xué)生喜歡。
現(xiàn)在學(xué)習(xí)Java還有前途嗎?
在互聯(lián)網(wǎng)行業(yè),Java工程師是一個技術(shù)含量非常高的崗位,支撐了互聯(lián)網(wǎng)行 業(yè)的半壁江山,全世界有一千萬Java程序員,目前還在有更多的計算機(jī)愛好者向Java的大門奔來。Java發(fā)展了20多年,關(guān)于Java的悲觀論調(diào)也不時出現(xiàn) ,現(xiàn)在學(xué)Java還有前途嗎?是否已經(jīng)過了紅利期了呢?
Java作為所有編程語言中熱門技術(shù),可以說它無處不在,目前全球有著數(shù)十 億的設(shè)備正在運行著Java,很多服務(wù)器程序都是用Java編寫,用以處理每天超過數(shù)以千萬的數(shù)據(jù)。
無論是手機(jī)軟件、手機(jī)Java游戲還是電腦軟件,每一次購物到每一筆支付成 功,都離不開Java,越來越多的企業(yè)也正采用Java語言開發(fā)網(wǎng)站,而在所有程序員中,Java開發(fā)工程師就占據(jù)了20%的比例。
從國內(nèi)排名靠前網(wǎng)站的主要開發(fā)語言,也可以看出Java在各大開發(fā)語言中的 地位。淘寶、搜狐、網(wǎng)易等一線互聯(lián)網(wǎng)公司,都在使用Java開發(fā)語言。
這也不難理解,為什么Java現(xiàn)在這么火爆,吸引越來越多的人學(xué)習(xí),根本原 因,還是因為企業(yè)對Java的認(rèn)可和應(yīng)用。
Java有沒有前途,需要我們認(rèn)清自己今后應(yīng)該怎么走自己的路線,是走技術(shù) ,還是走管理。走技術(shù)路線:從初級、中級、高級再到軟件架構(gòu)師。如果說走管理路線:項目經(jīng)理、部門經(jīng)理、技術(shù)總監(jiān)。只有清楚了自己要走的路線 后,再往決定的那一方面去努力,學(xué)習(xí)。除此以外,還有一些人學(xué)了這一專業(yè)后,從事銷售顧問、培訓(xùn)講師、自己創(chuàng)業(yè)的都有,關(guān)鍵是自己要認(rèn)識自己 ,自己更適何哪一條路。
所以,先認(rèn)清“正確的結(jié)果”,根據(jù)正確的結(jié)果去設(shè)計你的過程。當(dāng)一個人 具有明確的職業(yè)目標(biāo)時,就會對有助于實現(xiàn)目標(biāo)的蛛絲馬跡都特別敏感,做事情相應(yīng)也就會很有目的性,而不是稀里糊涂的。所以,就容易到達(dá)自己的 目的。如果沒有職業(yè)目標(biāo),腳踩西瓜皮滑到哪里是哪里,學(xué)什么技術(shù)都沒前途。
在未來的幾年,Java工程師人才的需求還在不斷的加大,由于人才的緊缺, 這個崗位相對于其它專業(yè)薪資待遇還是不錯的,而且Java工程師的待遇是與工作經(jīng)驗直接掛勾的,當(dāng)你有了豐富的經(jīng)驗以后,你在這個行業(yè)里就比較搶 手了,而且企業(yè)所出的薪酬也是相當(dāng)高的,到時只有你選擇他們了。
Java開發(fā)體系結(jié)構(gòu)介紹 :
Java開發(fā)體系結(jié)構(gòu)介紹 :
1、類加載器:為程序的執(zhí)行加載所需要的全部類。類加載器將本地文件系 統(tǒng)的類名空間與來自遠(yuǎn)程網(wǎng)絡(luò)源的類名空間相分離,本地類總是首先被加載,以增加安全性。當(dāng)全部類被加載后,可執(zhí)行文件的存儲器格式被確定。這 時,特定的存儲器地址被分配給符號引用并創(chuàng)建檢索表格。由于存儲器格式在運行時出現(xiàn),因而Java解釋器增加了保護(hù)以防止對限制代碼區(qū)的非法進(jìn)入 。
2、字節(jié)代碼校驗器:基于代碼的規(guī)范包括語法語義的檢查以及如上所述的 安全性檢查。
3、Java運行時解釋器:它是JVM的核心內(nèi)容,實現(xiàn)把抽象的字節(jié)碼指令映射 到本地系統(tǒng)平臺下的庫引用或指令。
4、API類庫:實現(xiàn)標(biāo)準(zhǔn)Java平臺API的一系列可執(zhí)行代碼。
5、硬件本地平臺接口:提供對底層系統(tǒng)平臺資源庫調(diào)用的接口。
仿華為天氣預(yù)報UI
>
近來公司事前較少,再來找?guī)讉€有意思的View練練手,下面是原生華為天氣預(yù)報界面:
下面是仿的UI交互效果:
**思路: 1.平移畫布到View中心,先繪制一個圓弧,繪制中間文字 2.旋轉(zhuǎn)畫布,繪制小短線,同時繪制中間的溫度和下邊的圖片 3.確定0攝氏度的位置,確定每日溫差之間共覆蓋多少角度 4.算出**小溫度的起始角,根據(jù)cos,sin計算坐標(biāo),繪制溫度數(shù)字。 5.算出**小溫度的短線索引,加粗變色繪制。**
1.首先在onMeasure中保證View寬高。
@Override PRotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int wrap_Len = 600; int width = measureDimension(wrap_Len, widthMeasureSpec); int height = measureDimension(wrap_Len, heightMeasureSpec); int len=Math.min(width,height); //保證是一個正方形 setMeasuredDimension(len,len); } public int measureDimension(int defaultSize, int measureSpec){ int result; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); if(specMode == MeasureSpec.EXACTLY){ result = specSize; }else{ result = defaultSize; //UNSPECIFIED if(specMode == MeasureSpec.AT_MOST){ result = Math.min(result, specSize); } } return result; } 然后開始平移畫布,繪制一個圓弧 mWidth=getWidth(); mHeight=getHeight(); radius=(mWidth-getPaddingLeft()-getPaddingRight())/2;//半徑 canvas.translate(mWidth/2,mHeight/2); private void drawArcView(Canvas canvas) { RectF mRect=new RectF(-radius,-radius,radius,radius); //canvas.drawRect(mRect,mArcPaint); canvas.drawArc(mRect,startAngle,sweepAngle,false,mArcPaint); }效果如圖:
2.旋轉(zhuǎn)畫布,繪制小短線 以一定的角度旋轉(zhuǎn)畫布,循環(huán)畫出短線
private void drawLine(Canvas canvas) { canvas.save(); float angle = (float)sweepAngle/count;//刻度間隔 canvas.rotate(-270 startAngle);//將起始刻度點旋轉(zhuǎn)到正上方 for(int i=0;i<=count;i ){ if(i==0 || i==count){ mLinePaint.setStrokeWidth(1); mLinePaint.setColor(Color.WHITE); canvas.drawLine(0,-radius,0,-radius 40,mLinePaint); }else if(i>=getStartLineIndex(minTemp,maxTemp) && i<=getEndLineIndex(minTemp,maxTemp)){ mLinePaint.setStrokeWidth(3); mLinePaint.setColor(getRealColor(minTemp,maxTemp)); canvas.drawLine(0,-radius,0,-radius 30,mLinePaint); }else { mLinePaint.setStrokeWidth(2); mLinePaint.setColor(Color.WHITE); canvas.drawLine(0,-radius,0,-radius 30,mLinePaint); } canvas.rotate(angle);//逆時針旋轉(zhuǎn) } canvas.restore(); }效果如圖:
然后繪制中間的溫度和下邊的圖片,并注釋掉繪制圓環(huán)的方法
private void drawTextBitmapView(Canvas canvas) { mTextPaint.setTextSize(144); canvas.drawText(currentTemp "°",0,0 getTextPaintOffset(mTextPaint),mTextPaint); canvas.drawBitmap(bitmap,0-bitmap.getWidth()/2,radius-bitmap.getHeight()/2-30,null); }其中g(shù)etTextPaintOffset()函數(shù)改變文字的Y坐標(biāo)偏移量
public float getTextPaintOffset(Paint paint){ Paint.FontMetricsInt fontMetrics = paint.getFontMetricsInt(); return -fontMetrics.descent (fontMetrics.bottom-fontMetrics.top)/2; }效果如圖:
3.然后確定0攝氏度在圓環(huán)中的位置,設(shè)為230度的位置為0度
計算圓環(huán)中230度的X,y坐標(biāo)。 //根據(jù)角獲得X坐標(biāo) R*cos& getTextPaintOffset(mTextPaint)-off private float getCosX(int Angle){ return (float) (radius*Math.cos(Angle*Math.PI/180)) getTextPaintOffset(mTextPaint); } private float getSinY(int Angle){ return (float)(radius*Math.sin(Angle*Math.PI/180)) getTextPaintOffset(mTextPaint); }因為平移的坐標(biāo)系,此時要根據(jù)象限決定偏移量的正負(fù)
private float getRealCosX(int Angle,int off,boolean outoff){ if(!outoff){ off=-off; } if(getCosX(Angle)<0){ return getCosX(Angle)-off; }else{ return getCosX(Angle) off; } } private float getRealSinY(int Angle,int off,boolean outoff){ if(!outoff){ off=-off; } if(getSinY(Angle)<0){ return getSinY(Angle)-off; }else{ return getSinY(Angle) off; } }有了正確的X,Y坐標(biāo)即可繪制出文字。有了0攝氏度的位置就能確定當(dāng)天溫度范圍的具體角。
//根據(jù)當(dāng)天溫度范圍獲得扇形開始角。 private int getStartAngle(int minTemp,int maxTemp){ int startFgAngle=0; if(minTemp>=maxTemp){ Log.e("ws","getStartAngle---?fail"); return startFgAngle; } if(minTemp<=0){ startFgAngle=ocAngle - (0 - minTemp)*fgAngle/(maxTemp-minTemp); }else{ startFgAngle=ocAngle (minTemp-0)*fgAngle/(maxTemp-minTemp); } //邊界 start if(startFgAngle<=startAngle){//如果開始角小于startAngle,防止過邊界 startFgAngle=startAngle 10; }else if((startFgAngle fgAngle)>=(startAngle sweepAngle)){//如果結(jié)束角大于(startAngle sweepAngle) startFgAngle =startAngle sweepAngle-20-fgAngle; } //邊界 end return startFgAngle; }求出具體角后就可以確定X,Y坐標(biāo)了
private void drawTempLineView(Canvas canvas) { mTextPaint.setTextSize(24); canvas.drawText("0°C",getRealCosX(ocAngle,offset,true),getRealSinY(ocAngle,offset,true),mTextPaint);//固定0度的位置 int startTempAngle=getStartAngle(minTemp,maxTemp); /* if(startTempAngle<=startAngle){//如果開始角小于startAngle,防止過邊界 startTempAngle=startAngle 10; }else if((startTempAngle fgAngle)>=(startAngle sweepAngle)){//如果結(jié)束角大于(startAngle sweepAngle) startTempAngle =startAngle sweepAngle-20-fgAngle; }*/ canvas.drawText(minTemp "°", getRealCosX(startTempAngle, offset,true), getRealSinY(startTempAngle, offset,true), mTextPaint); canvas.drawText(maxTemp "°", getRealCosX(startTempAngle fgAngle, offset,true), getRealSinY(startTempAngle fgAngle, offset,true), mTextPaint); // int circleAngle = startTempAngle (currentTemp-minTemp)*fgAngle/(maxTemp-minTemp); // mPointPaint.setColor(getRealColor(minTemp,maxTemp)); //canvas.drawCircle(getRealCosX(circleAngle,50,false),getRealSinY(circleAngle,50,false),7,mPointPaint); }
然后就是要繪制這段溫度范圍的線顏色,以及當(dāng)前溫度的點 繪制點:
int circleAngle = startTempAngle (currentTemp-minTemp)*fgAngle/(maxTemp-minTemp); mPointPaint.setColor(getRealColor(minTemp,maxTemp)); canvas.drawCircle(getRealCosX(circleAngle,50,false),getRealSinY(circleAngle,50,false),7,mPointPaint);繪制當(dāng)天溫度范圍的線,即在drawLine方法中加上
else if(i>=getStartLineIndex(minTemp,maxTemp) && i<=getEndLineIndex(minTemp,maxTemp)){ mLinePaint.setStrokeWidth(3); mLinePaint.setColor(getRealColor(minTemp,maxTemp)); canvas.drawLine(0,-radius,0,-radius 30,mLinePaint); //根據(jù)當(dāng)天溫度范圍獲取開始短線的索引 private int getStartLineIndex(int minTemp,int maxTemp){ return (getStartAngle(minTemp,maxTemp)-startAngle)/(sweepAngle/count); } private int getEndLineIndex(int minTemp,int maxTemp){ return (getStartAngle(minTemp,maxTemp)-startAngle)/(sweepAngle/count) fgAngle/(sweepAngle/count); } //根據(jù)溫度返回顏色值 public int getRealColor(int minTemp,int maxTemp){ if(maxTemp<=0){ return Color.parseColor("#00008B");//深海藍(lán) }else if(minTemp<=0 && maxTemp>0){ return Color.parseColor("#4169E1");//黃君蘭 }else if(minTemp>0 && minTemp<15 ){ return Color.parseColor("#40E0D0");//寶石綠 }else if(minTemp>=15 && minTemp<25){ return Color.parseColor("#00FF00");//酸橙綠 }else if(minTemp>=25 &&minTemp<30){ return Color.parseColor("#FFD700");//金色 }else if(minTemp>=30){ return Color.parseColor("#CD5C5C");//印度紅 } return Color.parseColor("#00FF00");//酸橙綠; }**終效果圖
相關(guān)推薦:
熱門課程
機(jī)構(gòu)資訊
- 太倉java開發(fā)培訓(xùn)費用_太倉JAVA培訓(xùn)
- 昆山哪里有Java實戰(zhàn)培訓(xùn)學(xué)校_昆山JAVA培訓(xùn)
- 常熟學(xué)Java哪個好_常熟JAVA培訓(xùn)
- 蘇州Java培訓(xùn)課程哪個好_蘇州JAVA培訓(xùn)
- 昆山哪里有Java語言培訓(xùn)學(xué)院_昆山JAVA培訓(xùn)
- 昆山Java工程師培訓(xùn)機(jī)構(gòu)哪個好_昆山JAVA培訓(xùn)
- 常熟學(xué)習(xí)Java工程師哪里好_常熟JAVA培訓(xùn)
- 昆山Java編程課程價格_昆山JAVA培訓(xùn)
- 張家港Java開發(fā)培訓(xùn)班學(xué)費_張家港JAVA培訓(xùn)
- 太倉Java工程師培訓(xùn)學(xué)院哪里好_太倉JAVA培訓(xùn)