Android学习笔记整理(纪念)

来源:互联网 发布:服装大师绘图仪软件 编辑:程序博客网 时间:2024/06/01 09:19

学习笔记:纪念曾经学过的Android,由于负责公司大的方向,向管理方向转型,原先内容一直在有道,为了减少有道笔记在移动端的同步问题,移到博客园。
1、AbActivity   
        继承后  主要实现标题栏的切换,可写一个基类继承实现基本功能后再让界面继承实现简易化操作;

2、@AbIocView
        实现类似AA框架的注解模式.
        如:@AbIocView(id=控件ID,Click="方法名") Button button; 
                按钮还是建议让Activity实现onClickListener接口,然后实现,上面的方面使用:@AbIocView(id=按钮id)Button btn即可。


一、.各种滑动嵌套问题

1、ListView + ViewPager
       
2、SlidingMenu + ViewPager
        
二、数据库操作ORM
      
单表操作(内置存储)  DBInsideSampleActivity.java
    用DAO 继承   AbDBDaoImpl<对象名称>
    //定义数据库操作实现类
 private UserInsideDao userDao = null;


三、线程操作
    
1、线程
    AbTask abTask = new AbTask;
    ////定义异步执行的对象
    final AbTaskItem item = new AbTaskItem();
    item.setListener(new AbTaskListener() {

     @Override
     public void update() {
      AbDialogUtil.removeDialog(ThreadControlActivity.this);
      AbToastUtil.showToast(ThreadControlActivity.this,"执行完成");
     }

     @Override
     public void get() {
            try {
             AbToastUtil.showToastInThread(ThreadControlActivity.this,"开始执行");
             Thread.sleep(3000);
             //下面写要执行的代码,如下载数据
            } catch (Exception e) {
            }
      };
    });

    // 执行线程
    abTask.execute(item);

2、线程队列  AbTaskQueue 
    final AbTaskQueue mAbTaskQueue = AbTaskQueue.getInstance();;
    
    
    
      
3、线程池  AbTaskPool
    

4、异步任务:AbTask  (void)
    

5、异步任务:AbTask  (object)
    
四、图片下载器
      
AbImageLoader mAbImageLoader = new AbImageLoader(mContext);
         mAbImageLoader.setLoadingImage(R.drawable.image_loading);
         mAbImageLoader.setErrorImage(R.drawable.image_error);
         mAbImageLoader.setEmptyImage(R.drawable.image_empty);


    //设置加载中的View(非必需)
    mAbImageLoader.setLoadingView(convertView.findViewById(R.id.progressBar));

    //0:表示原图片大小,
    mAbImageLoader.setMaxWidth(0);
    mAbImageLoader.setMaxHeight(0);

    //缩放图片的下载(保持宽高比,计算缩放比例,使一个方向缩放后,另一方向不小与显示的大小的最合适比例)
    mAbImageLoader.setMaxWidth(150);
    mAbImageLoader.setMaxHeight(150);

    //放大图片的下载
    mAbImageLoader.setMaxWidth(180);
    mAbImageLoader.setMaxHeight(180);


    //图片的下载
    mAbImageLoader.display(ImageView,"图片路径");

五、时钟
    
1、圆形挂钟:AbAnalogClock       AnalogClockActivity.java
     
    
    Drawable 分别为:圆形表的背景,时、分、秒 针;

2、数字时钟:AbNumberClock    NumberClockActivity.java
    
      
3、台历:AbCalendar    DeskCalendarActivity.java
        
        


六、旋转效果
     
1、图片适配
    CarouselImageView carousel = (CarouselImageView) findViewById(R.id.carousel);
    
    构建:List<Drawable>  对象
        
    像ListView 方式一样使用:用适配器
        CarouselImageAdapter adapter = new CarouselImageAdapter(this,mDrawables,true);
        carousel.setAdapter(adapter);
    单击和选择事件:
        

2、VIEW适配
    CarouselView carousel = (CarouselView) findViewById(R.id.carousel);
    
    构建:List<View>  对象
    
    像ListView 方式一样使用:用适配器
        CarouselViewAdapter adapter = new CarouselViewAdapter(this,mViews,true);
        carousel.setAdapter(adapter);
    单击和选择事件:
    

七、侧边栏
      
<strong>      </strong>1、简单的侧边        AbSlidingMenuView mAbSlidingView = new AbSlidingMenuView(this);        View mainView = mInflater.inflate(R.layout.right, null);        View leftView = mInflater.inflate(R.layout.left, null);          mAbSlidingView.addView(leftView, layoutParamsFF);          mAbSlidingView.addView(mainView, layoutParamsFF);          setContentView(mAbSlidingView);    2、左边栏(//SlidingMenu的配置)        SlidingMenu menu = new SlidingMenu(this);        menu.setMode(SlidingMenu.LEFT);        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);        menu.setShadowWidthRes(R.dimen.shadow_width);        menu.setShadowDrawable(R.drawable.shadow);        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);        menu.setFadeDegree(0.35f);        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//主视图的Fragment添加  getFragmentManager()  .beginTransaction()  .replace(R.id.content_frame, new FragmentLoad())  .commit();//menu视图的Fragment添加  menu.setMenu(R.layout.sliding_menu_menu);  getFragmentManager()  .beginTransaction()  .replace(R.id.menu_frame, new FragmentLoad())  .commit();mAbTitleBar.getLogoView().setOnClickListener(new OnClickListener() {      @Override   public void onClick(View arg0) {    if (menu.isMenuShowing()) {      menu.showContent();     } else {      menu.showMenu();     }   }  });@Override public void onBackPressed() {  if (menu.isMenuShowing()) {   menu.showContent();  } else {   super.onBackPressed();  } }

八、Tab切换
1、顶部切换TAB
    AbSlidingTabView mAbSlidingTabView = (AbSlidingTabView) findViewById(R.id.mAbSlidingTabView)
    
     //缓存数量
      mAbSlidingTabView.getViewPager().setOffscreenPageLimit(5);
      
     其它Tab页面需要继承:AbFragment
   
2、底部切换TAB
    AbBottomTabView mBottomTabView = (AbBottomTabView) findViewById(R.id.mBottomTabView);
    
    //缓存数量
      mBottomTabView.getViewPager().setOffscreenPageLimit(5);
     

九、图表
1、等级条图表:AbLevelSeriesRenderer          (LevelChartActivity.java)
    1.1 取出LinearLayout
        LinearLayout chartLayout = (LinearLayout) findViewById(R.id.chartLayout);    
    1.2 构建图表对象
        AbLevelSeriesRenderer renderer = new AbLevelSeriesRenderer();
    1.3 设置属性
        
           
          AbLevelSeriesDataset mDataset = new AbLevelSeriesDataset();
          AbLevelView mAbLevelView = AbLevelChartFactory.getLevelChartView(this, mDataset, renderer);

         chartLayout.addView(mAbLevelView, new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

2、XY线图 : XYMultipleSeriesRenderer (每条线都是一个:XYSeriesRenderer)
        
         
           
             
3、XY柱图  XYMultipleSeriesRenderer (每条线都是一个:XYSeriesRenderer)
        和XY线图是一个对象;
        上面最后一段
        
4、饼图  DefaultRenderer (每块都是一个:SimpleSeriesRenderer)
         DefaultRenderer renderer = new DefaultRenderer();
         
5、时间轴图   XYMultipleSeriesRenderer  (每条线是一个:XYSeriesRenderer)
        
6、XY域图  XYMultipleSeriesRenderer     (每条线是一个:XYSeriesRenderer)      XYAreaChartActivity.java
        
十、进度条
1、环形进度条:
AbCircleProgressBar             (ProgressBarCircleActivity.java)    <com.ab.view.progress.AbCircleProgressBar            android:id="@+id/circleProgressBar"            android:layout_width="210dip"            android:layout_height="210dip"            android:layout_centerHorizontal="true"            android:layout_centerVertical="true" />    AbCircleProgressBar mAbProgressBar = (AbCircleProgressBar) findViewById(R.id.circleProgressBar);    numberText = (TextView) findViewById(R.id.numberText);    maxText = (TextView) findViewById(R.id.maxText);    maxText.setText("总共  "+String.valueOf(max));    mAbProgressBar.setMax(max);    mAbProgressBar.setProgress(progress);    mAbProgressBar.setAbOnProgressListener(new AbCircleProgressBar.AbOnProgressListener() {      @Override   public void onProgress(int progress) {      }      @Override   public void onComplete() {    progress = 0;    mAbProgressBar.reset();   }  });


2、水平进度条:
AbHorizontalProgressBar     (ProgressBarHorizontalActivity.java)    AbHorizontalProgressBar mAbProgressBar = (AbHorizontalProgressBar) findViewById(R.id.horizontalProgressBar);    numberText = (TextView) findViewById(R.id.numberText);    maxText = (TextView) findViewById(R.id.maxText);     maxText.setText("/"+String.valueOf(max));    mAbProgressBar.setMax(max);    mAbProgressBar.setProgress(progress);    public void startAddProgress() {          progress = progress+10;          numberText.setText(String.valueOf(progress));          mAbProgressBar.setProgress(progress);          mUpdateHandler.sendEmptyMessageDelayed(1, 1000);     }mAbProgressBar.setAbOnProgressListener(new AbHorizontalProgressBar.AbOnProgressListener() {      @Override   public void onProgress(int progress) {      }      @Override   public void onComplete() {    progress = 0;    mAbProgressBar.reset();   }  });

十一、UI控件
1、滑动开关按钮 :AbSlidingButton
<com.ab.view.sliding.AbSlidingButton        android:id="@+id/mSliderBtn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_marginTop="8dip"        android:layout_marginRight="10dip">    </com.ab.view.sliding.AbSlidingButton>    //设置开关显示所用的图片    holder.itemsCheck.setImageResource(R.drawable.btn_bottom,R.drawable.btn_frame,R.drawable.btn_mask, R.drawable.btn_unpressed,R.drawable.btn_pressed);                      //holder.itemsCheck.setFocusable(false);          //设置开关的默认状态    true开启状态          //holder.itemsCheck.setToggleState(true);

2、图片轮播(实现:类似腾讯新闻首页顶部的幻灯片效果):AbSlidingPlayView  
[SlidingPlayViewActivity.java]    <com.ab.view.sliding.AbSlidingPlayView        android:id="@+id/mAbSlidingPlayView"        android:layout_width="fill_parent"        android:layout_height="150dip" >    </com.ab.view.sliding.AbSlidingPlayView>    AbSlidingPlayView mSlidingPlayView = (AbSlidingPlayView)findViewById(R.id.mAbSlidingPlayView);    //构建三个VIEW    final View mPlayView = mInflater.inflate(R.layout.play_view_item, null);      ImageView mPlayImage = (ImageView) mPlayView.findViewById(R.id.mPlayImage);      TextView mPlayText = (TextView) mPlayView.findViewById(R.id.mPlayText);      mPlayText.setText("1111111111111");      mPlayImage.setBackgroundResource(R.drawable.pic1);       final View mPlayView1 = mInflater.inflate(R.layout.play_view_item, null);      ImageView mPlayImage1 = (ImageView) mPlayView1.findViewById(R.id.mPlayImage);      TextView mPlayText1 = (TextView) mPlayView1.findViewById(R.id.mPlayText);      mPlayText1.setText("2222222222222");      mPlayImage1.setBackgroundResource(R.drawable.pic2);       final View mPlayView2 = mInflater.inflate(R.layout.play_view_item, null);      ImageView mPlayImage2 = (ImageView) mPlayView2.findViewById(R.id.mPlayImage);      TextView mPlayText2 = (TextView) mPlayView2.findViewById(R.id.mPlayText);      mPlayText2.setText("33333333333333333");      mPlayImage2.setBackgroundResource(R.drawable.pic3);       //添加到播放VIEW中      mSlidingPlayView.setNavHorizontalGravity(Gravity.RIGHT);      mSlidingPlayView.addView(mPlayView);      mSlidingPlayView.addView(mPlayView1);      //自动/停止播放        mSlidingPlayView.startPlay();        mSlidingPlayView.stopPlay();      //点击每一项时的方法

 //切换或改变到某一项时触发的方法

//结束


3、日历选择器
 CalendarView mCalendarView =               //找到线性布局,然后将日历加进来      LinearLayout mLinearLayout = (LinearLayout)this.findViewById(R.id.layout01);      mCalendarView = new  CalendarView(this);      mLinearLayout.addView(mCalendarView);      mCalendarView.setHeaderHeight(45);      mCalendarView.setHeaderTextSize(20);       mCalendarView.setBackgroundResource(R.drawable.calendar_bg);      mCalendarView.setHeaderBackgroundResource(R.drawable.week_bg);      mCalendarView.setOnItemClickListener(new CalendarView.AbOnItemClickListener() {          @Override       public void onClick(int position) {              String date = mCalendarView.getStrDateAtPosition(position);              AbToastUtil.showToast(CalendarActivity.this,"点击了"+position+"值:"+date);       }      });

4、POP提示框(可以设置上下左右中等 9 个效果)
<strong> </strong>AbPopoverView popoverView = new AbPopoverView(this);        popoverView = new AbPopoverView(this);        popoverView.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.popover_bg));        popoverView.setArrowLeftDrawable(this.getResources().getDrawable(R.drawable.popover_arrow_left));        popoverView.setArrowRightDrawable(this.getResources().getDrawable(R.drawable.popover_arrow_right));        popoverView.setArrowDownDrawable(this.getResources().getDrawable(R.drawable.popover_arrow_down));        popoverView.setArrowUpDrawable(this.getResources().getDrawable(R.drawable.popover_arrow_up));                popoverView.setContentSizeForViewInPopover(new Point(300, 300));        popoverView.setPopoverViewListener(new AbPopoverView.PopoverViewListener() {      @Override   public void popoverViewWillShow(AbPopoverView view) {   }      @Override   public void popoverViewWillDismiss(AbPopoverView view) {   }      @Override   public void popoverViewDidShow(AbPopoverView view) {   }      @Override   public void popoverViewDidDismiss(AbPopoverView view) {   }  });


5、轮子选择器:WheelActivity.java
   解释:实现类似IOS的日期、时间、数字方面的轮子选择;
    首先要根据需要创建一个布局,如:1,2,3个轮子;

 
 上面的布局创建以后,用下面方法来初始化轮子




十二、下拉刷新分页
1、普通View下拉刷新
    实现将所有的内容实现下拉刷新,加载更多;

    首先继承AbActivity,并实现 onHeaderRefreshListner,OnFooterLoadListener

    实始化:

下拉刷新

上拉加载更多:

多列的ListView瀑布流
<com.ab.view.pullview.AbMultiColumnListView        android:id="@+id/mListView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:cacheColorHint="#00000000"        android:divider="@drawable/list_divider"        android:dividerHeight="1dip" >    </com.ab.view.pullview.AbMultiColumnListView>

十三、Dialog示例
Dialog可自定义对话框的显示内容及样式,通过mInflater.infleter(id,null)方式找到view;
说明:showDialog时均为有背景(黑色底,如下图1.1 右),showPanel时均为无背景(如下图1.2 右)
1、通用Dialog
    1.1 显示一个自定义的对话框:背景为暗黑色

1.2 显示一个自定义的对话框,无背景色

2.  Loding 事件 + Dialog  [showLoadDialog/showLoadPanel]
final AbLoadDialogFragment mDialogFragment = AbDialogUtil.showLoadDialog(this, R.drawable.ic_load, "正在查询,请稍候");             mDialogFragment.setAbDialogOnLoadListener(new AbDialogOnLoadListener() {           @Override           public void onLoad() {                // 下载网络数据                downRss(mDialogFragment);           }      });          // 取消的监听          mDialogFragment.setOnCancelListener(new OnCancelListener() {           @Override           public void onCancel(DialogInterface dialog) {                    AbToastUtil.showToast(DialogActivity.this, "Load框被取消");           }          });

 NetworkWeb 是一个AbHttpUtil的测试类;

3. refreshing 事件 + Dialog

4、AlterDialog 系统样式








5、自定义样式 Dialog + 动画
      



       
       6、自定义按钮的位置 (上,中,下,全屏)
             
7、进度条
      
      
十四、HTTP请求
         以下用到操作HTTP的GET,POST请求,同时后面介绍到用队列实现快速高频繁调用方法;
1、Http工具类:AbHttpUtil
        使用(初始化):
                   AbHttpUtil mAbHttpUtil = AbHttpUtil.getInstance(this);
                   mAbHttpUtil.setTimeout(10000);
        调用:
        1.1 get 请求

 1.2 post 请求

  1.3 请求后用 byte[] 字节数组下载(如图片)

 1.4 下载文件

下载文件时需要有进度条,下面为开始下载,下载进度及下载完成的代码:

 进度条需要有一个VIEW用于显示,VIEW中用到AB的进度条控件

  1.5 多File上传(最多两个文件传一次),用POST方法
            描述:首先构建AbRequestParams参数

然后POST请求

开始的方法中需要显示进度条:

2、频繁快速响应Request
    解释:适合大量频繁快速响应的Http Request,也称为“迷你工具类”,主要用到队列;
    首先构建对象:
<strong> </strong>RequestQueue mQueue = Volley.newRequestQueue(this);    Response.Listener<String> mListener = new Response.Listener<String>(){            @Override              public void onResponse(String response) {               AbDialogUtil.showAlertDialog(HttpMiniActivity.this,"返回结果",response.trim(),new AbDialogOnClickListener(){             @Override            public void onNegativeClick() {            }            @Override            public void onPositiveClick() {            }         });          }        };        Response.ErrorListener mErrorListener = new Response.ErrorListener() {          @Override          public void onErrorResponse(VolleyError error) {               AbToastUtil.showToast(HttpMiniActivity.this,error.getMessage());          }        };
然后构建要请求的队列(队列中可以有GET,也可以用POST):

最后完成的时候(需重写Activity的finish方法)或者取消时调用:


十五、WebService访问
Soap:实现WebService的调用
        类:AbSoapUtil
        使用(初始化):
        
 AbSoapUtil abSoapUtil = AbSoapUtil.getInstance(this); abSoapUtil.setTimeout(1000);
调用:










0 0
原创粉丝点击