吳嘉俊(Stef)高級(jí)講師
擁有多年的Java開(kāi)發(fā)經(jīng)驗(yàn),CTO,EasyJF開(kāi)源團(tuán)隊(duì)創(chuàng)始人之一、負(fù)責(zé)
EasyJWeb項(xiàng)目的開(kāi)發(fā)和維護(hù)。曾在國(guó)內(nèi)多家大型軟件公司負(fù)責(zé)公司內(nèi)部框架的開(kāi)發(fā)和維護(hù),為多個(gè)大中型公司做過(guò)架構(gòu)和技術(shù)咨詢(xún)。曾組織開(kāi)發(fā)了藍(lán)源
裝飾行業(yè)ERP、美國(guó)EMR、藍(lán)源服裝行業(yè)連鎖管理系統(tǒng)、藍(lán)源SaaS服務(wù)平臺(tái)、藍(lán)源Eloan互聯(lián)網(wǎng)金融綜合解決方案等系統(tǒng)產(chǎn)品。具有非常豐富項(xiàng)目開(kāi)發(fā)和
管理經(jīng)驗(yàn)。
擅長(zhǎng)技術(shù):主流JavaEE,Android技術(shù),對(duì) Spring、JPA、Hibernate、
MyBatis、Struts2、MongoDB、Redis等技術(shù)領(lǐng)域有深入研究。
吳老師有豐富的Java培訓(xùn)經(jīng)驗(yàn)和IT培訓(xùn)行業(yè)顧問(wèn)經(jīng)驗(yàn);授課激情,有感染力
,注重對(duì)底層原理的剖析和理解;善于培養(yǎng)學(xué)生對(duì)編程的興趣;
Java開(kāi)發(fā)的應(yīng)該
如何掌握上述相關(guān)技術(shù)?
Java開(kāi)發(fā)的應(yīng)該如何掌握上述相關(guān)技術(shù)?
一:首先,有這樣的一種情況很常見(jiàn),對(duì)于想自學(xué)Java開(kāi)發(fā)的人來(lái)說(shuō),他們
大多數(shù)都是非常盲目的,不知道自己改如何入手,很多人在網(wǎng)上找一些視頻,然后瘋狂的過(guò)視頻,很快就把一塊內(nèi)容都學(xué)完,他們理解的學(xué)完了就是視
頻看完了,但是讓他們動(dòng)手去做東西卻做不出來(lái),而我的理解學(xué)完了就是自己能寫(xiě)出東西,所以對(duì)于初學(xué)者來(lái)說(shuō)一定不能盲目,要有自己的規(guī)劃,不然
就是浪費(fèi)時(shí)間白忙活。
二:既然是學(xué)習(xí)Java開(kāi)發(fā)專(zhuān)業(yè)技術(shù),我個(gè)人的建議是,一定要有一個(gè)能指導(dǎo)
你的人,不能都靠自己閉門(mén)造車(chē),這樣的行為并不聰明,結(jié)識(shí)一位這方面的人才,時(shí)不時(shí)去問(wèn)問(wèn)人家問(wèn)題,不然你可能會(huì)發(fā)現(xiàn)一個(gè)小問(wèn)題能困擾你一天
,**后還不知道是什么原因。
三:學(xué)習(xí)Java開(kāi)發(fā)技術(shù),不能跟學(xué)數(shù)學(xué)語(yǔ)文一樣對(duì)待,比較剛接觸代碼是不
容易記住的,所以要掌握上述的技術(shù),你還要知道學(xué)習(xí)Java開(kāi)發(fā)技術(shù)有哪些“坑”。對(duì)于學(xué)習(xí)方法這塊是尤為重要的,怎么學(xué)才能讓你學(xué)完了能記住之
前學(xué)的那些,不至于學(xué)完了就忘,這個(gè)問(wèn)題值得你學(xué)習(xí)之前去思考的。
四:根據(jù)我多年的學(xué)習(xí)情況來(lái)看,你平時(shí)一定要養(yǎng)成好的學(xué)習(xí)習(xí)慣,就說(shuō)我
自己吧!我就喜歡把自己曾經(jīng)遇到的問(wèn)題整理在電腦的日記本上,然后我會(huì)搜集一下博客相關(guān)的Java技術(shù)文章,一些我認(rèn)為比較有用的網(wǎng)站,以后都能
用的上,這是我個(gè)人的學(xué)習(xí)習(xí)慣,相信我,如果你想走的更遠(yuǎn),一定要養(yǎng)成習(xí)慣。
**后給大家一些詳細(xì)的學(xué)習(xí)安排路線(xiàn):
Java基礎(chǔ):Java基礎(chǔ)語(yǔ)法、數(shù)組、類(lèi)與對(duì)象、繼承與多態(tài)、異常、范型、集
合、流與文件、反射、枚舉、自動(dòng)裝箱和注解。
數(shù)據(jù)庫(kù):mysql、oracle
Javaweb:HTML與CSS網(wǎng)頁(yè)開(kāi)發(fā)基礎(chǔ)、Java腳本語(yǔ)言、搭建開(kāi)發(fā)環(huán)境、JSP基
本語(yǔ)法、JSP內(nèi)置對(duì)象、JavaBean技術(shù)、Servlet技術(shù)、Ajax技術(shù)
框架:Struts2、Hibernate、Spring、SpringMVC、mybatis
JavaEE進(jìn)階
JavaWeb后端開(kāi)發(fā)
Tomcat服務(wù)器
Nginx服務(wù)器配置
dubbo
SOA 微服務(wù)
JavaWeb開(kāi)發(fā)核心
JavaEE主流框架
Spring框架
SpringMVC框架
Struts框架
Hibernate框架
MyBatis
階段綜合項(xiàng)目
微信
點(diǎn)餐系統(tǒng)
吃了嗎app
課程優(yōu)勢(shì)
1.掌握當(dāng)前流行的Nginx服務(wù)器后臺(tái)程序開(kāi)發(fā)
2.使學(xué)員具備企業(yè)級(jí)服務(wù)器、網(wǎng)站的項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)。
本階段學(xué)習(xí)目標(biāo)
1.掌握Tomcat/Nginx服務(wù)器搭建。
2.掌握J(rèn)sp&Servlet的使用。
3.精通SSH、SSM兩大流行框架的原理及使用。
本階段學(xué)習(xí)效果
1.掌握html5相關(guān)知識(shí)能夠**需求搭建高質(zhì)量網(wǎng)站;
2.可以實(shí)現(xiàn)原生js搭建動(dòng)態(tài)效果界面;
3.使用JQuery庫(kù)快速搭建原型界面;
Android屬性動(dòng)畫(huà)(Animator)
>
傳統(tǒng)的Animation
動(dòng)畫(huà)雖然使用方便,但是不適合做具有交互性的動(dòng)畫(huà)效果,僅僅適合做展示性的動(dòng)畫(huà),而Animator
,屬性動(dòng)畫(huà),是改變了該view
的內(nèi)部屬性,適合有交互功能的動(dòng)畫(huà)。
1.ObjectAnimator
代碼:
//**個(gè)參數(shù),動(dòng)畫(huà)的對(duì)象,第二個(gè)參數(shù),需要改變的動(dòng)畫(huà)屬性,后邊參數(shù),變化的具體值(像素)
//若寫(xiě)多個(gè),則動(dòng)畫(huà)會(huì)同時(shí)實(shí)行,此例中即旋轉(zhuǎn)360°的同時(shí)向x軸和y軸平移
ObjectAnimator.ofFloat(iv, "rotation", 0f, 360f).setDuration(1000).start();
ObjectAnimator.ofFloat(iv, "translationX", 0f, 200f).setDuration(1000).start();
ObjectAnimator.ofFloat(iv, "translationY", 0f, 200f).setDuration(1000).start();
可用的屬性有
屬性名
|
含義
|
translationX和translationY
|
x軸和y軸的偏移量
|
rotation、rotationX和rotationY
|
圍繞支點(diǎn)旋轉(zhuǎn)
|
scaleX和scaleY
|
縮放
|
pivotX和pivotY
|
控制著view對(duì)象的支點(diǎn)位置,圍繞該支點(diǎn)旋轉(zhuǎn)縮放處理,默認(rèn)是view中心點(diǎn)
|
alpha
|
透明度
|
2.PRopertyValuesHolder
代碼:
//效果同上,但動(dòng)畫(huà)效果做了優(yōu)化,而且更有效率
PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation", 0f, 360f);
PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX", 0f, 200f);
PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY", 0f, 200f);
//調(diào)用ofPropertyValuesHolder方法傳入要?jiǎng)赢?huà)的控件和PropertyValuesHolder
ObjectAnimator.ofPropertyValuesHolder(iv, p1, p2, p3).setDuration(1000).start();
3.AnimatorSet
提供了更多的動(dòng)畫(huà)控制效果
代碼:
ObjectAnimator animator1 = ObjectAnimator.ofFloat(iv, "rotation", 0f, 360f);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(iv, "translationX", 0f, 200f);
ObjectAnimator animator3 = ObjectAnimator.ofFloat(iv, "translationY", 0f, 200f);
AnimatorSet set = new AnimatorSet();
set.playTogether(animator1, animator2, animator3);//同時(shí)執(zhí)行
// set.playSequentially(animator1, animator2, animator3); //按順序執(zhí)行
set.setDuration(1000);
set.start();
還可以先x軸和y軸同時(shí)平移,**后才旋轉(zhuǎn)
代碼:
//將set.playTogether()替換為如下代碼
set.play(animator2).with(animator3);//with表示同時(shí)一起執(zhí)行
set.play(animator1).after(animator2);//after 2 或者 3 都可以
4.Animator監(jiān)聽(tīng)事件
代碼:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "alpha", 0f, 1f);
objectAnimator.setDuration(1000);
//添加adapter來(lái)只監(jiān)聽(tīng)某個(gè)事件或者如下注釋的全部監(jiān)聽(tīng)
objectAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
Toast.makeText(getapplicationContext(), "別點(diǎn)了!", Toast.LENGTH_LONG).show();
}
});
// objectAnimator.addListener(new Animator.AnimatorListener() {
// @Override
// public void onAnimationStart(Animator animation) {
//
// }
//
// @Override
// public void onAnimationEnd(Animator animation) {
// Toast.makeText(getApplicationContext(), "別點(diǎn)了!", Toast.LENGTH_LONG).show();
// }
//
// @Override
// public void onAnimationCancel(Animator animation) {
//
// }
//
// @Override
// public void onAnimationRepeat(Animator animation) {
//
// }
// });
objectAnimator.start();
5.ValueAnimator的使用
ValueAnimator
可以當(dāng)做數(shù)值發(fā)生器,生產(chǎn)具有一定規(guī)律的數(shù)字,從而來(lái)控制動(dòng)畫(huà)的過(guò)程。
例如:
代碼:按鈕的點(diǎn)擊事件中,設(shè)置ValueAnimator
ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(5000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//獲取動(dòng)畫(huà)過(guò)程中的value(上邊定義的0~100),用以其他邏輯,例如設(shè)置文字
Integer value = (Integer) animation.getAnimatedValue();
bt.setText("" value);
}
});
animator.start();
6.View的animate方法
View
直接就有animate()
方法,用以直接驅(qū)動(dòng)簡(jiǎn)單的屬性動(dòng)畫(huà)
代碼:
bt_time.animate()
.alpha(0).
setDuration(1000).
withStartAction(new Runnable() {
@Override
public void run() {
}
})
.withEndAction(new Runnable() {
@Override
public void run() {
}
})
.start();
相關(guān)推薦:
蘇州JAVA培訓(xùn) 蘇州JAVA培訓(xùn)班 蘇州JAVA培訓(xùn)機(jī)構(gòu)
體驗(yàn)課預(yù)約試聽(tīng)
倒計(jì)時(shí)
12:00:00