菜鸟--Adroid学习之法律咨询客户端二
来源:互联网 发布:stc单片机哪个系列好用 编辑:程序博客网 时间:2024/06/08 15:40
在开始编写代码之前我先整理一下代码大致的结构:
MainActivity
if(FirstInstall)
Welcome_Fragment(ViewPager)
else
Loading_Fragment
主要代码:
MainActivity.java
public classMainActivity extends FragmentActivity {
private FragmentManagermanager;
private static final String LOG_INFO ="log_info";
private static final String IS_SHOW_WELCOME ="showwelcome";
//private boolean isActivityDestory = false;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得一个FragmentManager实例
manager =getSupportFragmentManager();
//不启用欢迎界面时,将启动界面,替换为转换动画,并显示
if(!isShowWelcome()){
//beginTransaction开始一个事务
manager.beginTransaction()
//添加一个转换动画.就像是幻灯片里的各个篇幅之间转换是的动作。
.setCustomAnimations(R.anim.ui_slide_intop,0)
//添加一个fragment到Activity中
.add(R.id.main_layout_content,newWelcome())
//提交事务
.commit();
Log.i(LOG_INFO,"welcome");
}else{
initLawyerMain();
}
}
/**
* 加载主页面
*
*/
public void initLawyerMain(){
manager.beginTransaction()
.setCustomAnimations(R.anim.ui_slide_inright,
R.anim.ui_slide_outleft)
.replace(R.id.main_layout_content,newLoading()).commit();
//设置一个倒计时CountDownTimer
//第一个参数为倒计时的时间,
//第二个参数为间隔时间(把它当成计时单位来理解)
newCountDownTimer(5000,1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
//判断网络连接状态
if(!checkInternet()){
Toast.makeText(getApplication(),"网络连接异常!",
Toast.LENGTH_SHORT).show();
}
//避免在倒计时的过程中View意外关闭
if (isActivityDestory){
return;
}
manager.beginTransaction()
.setCustomAnimations(R.anim.ui_slide_inright,
R.anim.ui_slide_outleft)
.replace(R.id.main_layout_content,newLawyerMain(),
"lawyermain").commitAllowingStateLoss();
//commitAllowingStateLoss()用于提交可以被丢掉的情况
//replace中的第三个参数,是个Tag方便以后查找到该Fragment
}
}.start();}
/**
* 判断是否启动Welcome界面
* @return
*/
private boolean isShowWelcome(){
//SharedPreferences 一种轻型的数据存储方式
SharedPreferencespreferences = getSharedPreferences(IS_SHOW_WELCOME,
MODE_PRIVATE);
boolean showWelcome =preferences.getBoolean(IS_SHOW_WELCOME,false);
if(!showWelcome){
preferences.edit().putBoolean(IS_SHOW_WELCOME,true).commit();
}
return showWelcome;
}
//判断网络连接状况
private booleancheckInternet() {
// TODO Auto-generated method stub
ConnectivityManagerconnectivityManager = (ConnectivityManager)this.
getSystemService(CONNECTIVITY_SERVICE);
NetworkInfonetworkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo !=null){
return true;
}
return false;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
isActivityDestory= true;
//对用户的登录信息进行的操作
GetUserUtils.deleteUserLocation(this);
super.onDestroy();
}
@Override
public voidonBackPressed() {
// TODO Auto-generated method stub
if(manager.findFragmentByTag("lawyermain")!=null
&&manager.getBackStackEntryCount()== 0){
dailogBulider().show();
}else{
super.onBackPressed();
}
}//AlertDialog警告对话框
private AlertDialogdailogBulider() {
// TODO Auto-generated method stub
AlertDialog.Builderbuilder = newAlertDialog.Builder(this);
builder.setTitle("提示").setMessage("确认退出吗?")
.setPositiveButton("确认",newOnClickListener() {
@Override
public void onClick(DialogInterfacearg0, intarg1) {
// TODO Auto-generated method stub
MainActivity.this.finish();
}
}).setNegativeButton("取消",null).setCancelable(true);
return builder.create();
}}
Welcome.java
public classWelcome extendsFragmentimplementsOnClickListener {
//ViewPager想Lancher一样实现左右滑动
private ViewPagerwelcomeViewPeper;
//imageView顾名思义图片视图
private ImageView[]imageViews =new ImageView[3];
private static final int[] imgRes = {R.drawable.default01,
R.drawable.default02,R.drawable.default03};
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activityactivity){
super.onAttach(activity);
initImgs(activity);
}
/**
* 初始化imageViews中的view
*
* @param context
*/
@SuppressWarnings("deprecation")
public void initImgs(Contextcontext){
for(int i=0;i<imageViews.length;i++){
imageViews[i] = new ImageView(context);
//初始化imageView
imageViews[i].setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
imageViews[i].setScaleType(ScaleType.FIT_CENTER);
imageViews[i].setBackgroundDrawable(getResources().getDrawable(
imgRes[i]));
}
//响应Loading_fragment
imageViews[2].setOnClickListener(this);
}
@Override
public ViewonCreateView(LayoutInflater inflater, ViewGroup container,
BundlesavedInstanceState){
welcomeViewPeper = (ViewPager)inflater.inflate(R.layout.welcome_fragment,
container,false);
welcomeViewPeper.setAdapter(new WelcomeAdapter());
return welcomeViewPeper;
}
class WelcomeAdapterextends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public boolean isViewFromObject(Viewarg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroupcontainer,intposition,Object object){
container.removeView(imageViews[position]);
}
@Override
public ObjectinstantiateItem(ViewGroup container,int position){
container.addView(imageViews[position]);
returnimageViews[position];
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
((MainActivity)getActivity()).initLawyerMain();
}
}
public classWelcome extendsFragmentimplementsOnClickListener {
private ViewPagerwelcomeViewPeper;
private ImageView[]imageViews =new ImageView[3];
private static final int[] imgRes = {R.drawable.default01,
R.drawable.default02,R.drawable.default03};
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activityactivity){
super.onAttach(activity);
initImgs(activity);
}
/**
* 初始化imageViews中的view
*
* @param context
*/
@SuppressWarnings("deprecation")
public void initImgs(Contextcontext){
for(int i=0;i<imageViews.length;i++){
imageViews[i] = new ImageView(context);
imageViews[i].setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
imageViews[i].setScaleType(ScaleType.FIT_CENTER);
imageViews[i].setBackgroundDrawable(getResources().getDrawable(
imgRes[i]));
}
imageViews[2].setOnClickListener(this);
}
@Override
public ViewonCreateView(LayoutInflater inflater, ViewGroup container,
BundlesavedInstanceState){
welcomeViewPeper = (ViewPager)inflater.inflate(R.layout.welcome_fragment,
container,false);
welcomeViewPeper.setAdapter(new WelcomeAdapter());
return welcomeViewPeper;
}
class WelcomeAdapterextends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public boolean isViewFromObject(Viewarg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroupcontainer,intposition,Object object){
container.removeView(imageViews[position]);
}
@Override
public ObjectinstantiateItem(ViewGroup container,int position){
container.addView(imageViews[position]);
returnimageViews[position];
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
((MainActivity)getActivity()).initLawyerMain();
}
}
Loading.javapublic classLoading extendsFragment{
@Override
public void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
}
@Override
public ViewonCreateView(LayoutInflater inflater, ViewGroup container,
BundlesavedInstanceState){
Viewview = inflater.inflate(R.layout.loading_fragment, container,
false);
return view;
}
}
总结一下,之前欢迎界面,所接触到的技术:
在选择显示窗口的时候,选用了Fragment.。Fragment有以下特点:
Fragment
该案例中Welcome.java和Loading.java就是嵌套在MainActivity中Fragment。
在MainActivity调用Welcome时使用到了转场动画。
Animation
在Welcome中使用到了ViewPager
ViewPager
在从欢迎界面跳转到LawyerMain界面时候判断了一下网络连接状况。使用到了CountDownTimer 和 ConnectivityManager
CountDownTimer
ConnectivityManager
tip:在判断网络连接的时候,要在Mainfest.xml中加上<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在返回键的处理上使用到了AlertDialog
AlertDialog
- 菜鸟--Adroid学习之法律咨询客户端二
- 菜鸟--Adroid学习之法律咨询客户端一
- Adroid之SqliteDatabase学习笔记
- IM菜鸟学习之Socket聊天-客户端
- Java-菜鸟学习之路(二)
- 机器学习sklearn之菜鸟入门二
- 菜鸟springboot学习之旅二
- Adroid学习之路--Activity的生命周期
- Kafka学习之二:Python客户端
- 菜鸟之JPA二
- windows API 菜鸟学习之路(二)
- JAVAEE菜鸟学习之路(二)--------------------------java基础完结
- 前端菜鸟的成长学习之路(二)
- 数据库菜鸟学习之旅(二):Mysql自定义函数
- FireFly菜鸟学习二(cocos2dx客户端和服务器通信实现)
- Adroid学习笔记
- Adroid listView 学习
- Adroid之NavigationView
- 在存储过程中编写正确的事务处理代码
- 判断按键是否按下去了!
- jQuery中ajax使用
- 传智播客北京校区2014年五一劳动节放假通知
- POJ 2406 Power Strings(KMP:找串循环节)
- 菜鸟--Adroid学习之法律咨询客户端二
- java笔记之集合
- [笔记]Google对Android的控制
- SYN cookies机制下连接的建立
- Android在子线程中更新Activity中UI的方法
- COSMIC编译器让代码在RAM中运行的方法
- VA01出口--修改SO 号码段
- opencv实践程序4——canny实现摄像头的边缘检测,高斯背景建模
- 学以致用,以书开疆