任小龙(Will、龙17)高级讲师
EasyJF开源团队成员,技术经理,高级讲师。
擅长技术:JavaSE、Java Web、Spring、Hibernate、MyBatis、Spring MVC 、Struts2、Struts1、 WebService、Lucene、Android等开源技术;以及Oracle、MySQL等数据库技术。
龙老师实战经验丰富,热衷探索新技术,拥有多年的Java开发和培训经验, 授课富有激情又通俗易懂,知识点分析深入,举例贴近生活不乏幽默生动,注重引导学生思维。
讲课风格:课堂幽默生动,思维行云流水,授课水到渠成。
学生点赞:龙哥的视频,苍老师都喜欢。
自学java与java培训该如何选择
从事IT培训行业这些年,身边经常有朋友来咨询,问现在是否可以加入这个高薪行业,Java学习难不难,需要哪些条件?
在软件开发设计行业当中,使用**多的编程语言就属Java软件开发了,很多人都想在Java编程开发领域寻求一份工作。
Java是当前世界上比较流行的计算机编程语言,Java彻底改变了人们的生活,国内的开发人才需求量仍然在不断的增长,主要原因还是在于移动互联网的快速发展,衍生出一大批的新生企业,创业公司,预计在未来5年内Java软件开发人才的需求将会远大于供给,其中java程序员、java工程师**为缺乏。
自学java与java培训是两个绕不开的话题,两者的区别,前者知识是自己搜寻的,买书看或者网上找视频看,而后者,技术知识是老师教的,作为一个普通大学生实际上任何人都能够自学,只不过聪明程度和坚持的时间长短不同,花费的时间长一点短一点而已。
学习关乎到时间和金钱,没有效果和质量的培训,其实是没有任何意义的。Java培训班有哪些呢?市面上的Java培训良莠不齐,选择时应该慎重些。Java致力于打造符合企业需求的全能型人才。课程定位定位中高级JAVA开发工程师,课程内容涉及面广,内容深。课程涵盖了Java、Web,数据库,企业流行框架,Java等企业**佳实践、云计算大数据课程、内容由浅入深,剖析原理,让学员掌握实用技术,做企业和社会需要的稀缺人才。
此外,Java培训将为你提供就业保障,开设有就业指导课,设有专门的就业指导老师,在毕业前期,毕业之际,就业老师会为你做专门的就业指导,更有职业素养课程,不仅将你打造成Java开发技术达人,更是一位懂得职场之道的合格就业者。还有丰富的Java学习视频免费为你提供学习。
Java基础语法
Java基础语法
Java基础语法
流程控制语句
Java 编译器执行流程
if 分支结构
switch 选择结构与相关规则
循环结构
for 循环
while 循环
do-while 循环语句
各语句性能对比与应用场景
特殊流程控制语句
方法的声明与使用
方法调用的过程分析
跨类调用方法
参数的值传递
方法的重载 Overload
Adroid性能优化--启动页优化
>
一般情况下,app在首次启动时需要加载大量布局跟数据,我公司项目首次启动需要加载一个Activity里面有7个Fragment…加上各种数据,经常导致启动时会有白屏现象,为了完美解决各种现象也花了一些功夫,这里记录一下. 1:点击App启动时**个白屏 这个白屏是因为主题背景设置导致的,解决也比较简单,就是设置App主题背景图片为自己App 加载的图片即可,这里注意要把加载Activity跟布局的背景去掉,不然主题的背景会被覆盖!
<!-- application theme. --> <style name="APPTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item> <item <!-- 自定义背景 -->name="android:windowBackground">@color/white</item> <!-- All customizations that are T specific to a particular API-level can go here. --> </style>然后在清单文件设置主题就可以!
2:splash 界面过后,跳转主界面时间过长,出现白屏; 这种情况就是主界面布局复杂,加载时间长导致的或者主界面加载过程有耗时操作;这里不讨论耗时操作的影响,有点经验都不会放到主线程; 复杂的布局改怎么处理?总不能不加载吧… 这里使用延时加载子布局方法 以前我们的思路是先加载splash界面,一定时间后再跳转到主界面,这个思路有2个缺点 **: 加载splash界面时不能加载网络数据(加载了也要做缓存,因为这个界面很快就要被回收),浪费了中间的宝贵时间 第二:加载splash界面时不能预加载复杂的主界面,导致跳转到主界面后卡顿,白屏! 这里的思路是将 splash界面图片直接放在主界面,用延时加载布局方法先加载图片后再加载复杂布局; 下面上代码
import java.lang.ref.WeakReference; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.view.ViewStub; public class MainActivity extends FragmentActivity { PRivate Handler mHandler = new Handler(); private SplashFragment splashFragment; private ViewStub viewStub; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); splashFragment = new SplashFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame, splashFragment); transaction.commit(); // mHandler.postDelayed(new Runnable() { // @Override // public void run() { // mProgressBar.setVisibility(View.GONE); // iv.setVisibility(View.VISIBLE); // } // }, 2500); viewStub = (ViewStub)findViewById(R.id.content_viewstub); //1.判断当窗体加载完毕的时候,立马再加载真正的布局进来 getWindow().getDecorView().post(new Runnable() { @Override public void run() { // 开启延迟加载 mHandler.post(new Runnable() { @Override public void run() { //将viewstub加载进来 viewStub.inflate(); } } ); } }); //2.判断当窗体加载完毕的时候执行,延迟一段时间做动画。 getWindow().getDecorView().post(new Runnable() { @Override public void run() { // 开启延迟加载,也可以不用延迟可以立马执行(我这里延迟是为了实现fragment里面的动画效果的耗时) mHandler.postDelayed(new DelayRunnable(MainActivity.this, splashFragment) ,2000); // mHandler.post(new DelayRunnable()); } }); //3.同时进行异步加载数据 } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } static class DelayRunnable implements Runnable{ private WeakReference<Context> contextRef; private WeakReference<SplashFragment> fragmentRef; public DelayRunnable(Context context, SplashFragment f) { contextRef = new WeakReference<Context>(context); fragmentRef = new WeakReference<SplashFragment>(f); } @Override public void run() { // 移除fragment if(contextRef!=null){ SplashFragment splashFragment = fragmentRef.get(); if(splashFragment==null){ return; } FragmentActivity activity = (FragmentActivity) contextRef.get(); FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction(); transaction.remove(splashFragment); transaction.commit(); } } } }简单的Fragmemt
import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class SplashFragment extends Fragment { @Override @Nullable public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_splash, container,false); } }布局activity_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.applicationstartoptimizedemo.MainActivity" > <ViewStub android:id="@ id/content_viewstub" android:layout="@layout/activity_main_viewstub" android:layout_width="match_parent" android:layout_height="match_parent"/> <FrameLayout android:id="@ id/frame" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </RelativeLayout>activity_main_viewstub
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@ id/content" android:layout_width="match_parent" android:layout_height="match_parent" > <ProgressBar android:id="@ id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <ImageView android:id="@ id/iv" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitStart" android:src="@drawable/content" /> </FrameLayout>fragment_splash
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.applicationstartoptimizedemo.MainActivity" > <FrameLayout android:id="@ id/frame" android:background="@drawable/splash12" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </RelativeLayout>主要就是用到 ViewStub 延时加载就机制.
相关推荐: