美文网首页
无标题文章

无标题文章

作者: 后知后觉_95a8 | 来源:发表于2017-06-29 14:16 被阅读0次

    学习笔记:纪念曾经学过的Android,由于负责公司大的方向,向管理方向转型,原先内容一直在有道,为了减少有道笔记在移动端的同步问题,移到博客园。
    1、AbActivity
    继承后 主要实现标题栏的切换,可写一个基类继承实现基本功能后再让界面继承实现简易化操作;
    2、@AbIocView
    实现类似AA框架的注解模式.
    如:@AbIocView(id=控件ID,Click="方法名") Button button;
    按钮还是建议让Activity实现onClickListener接口,然后实现,上面的方面使用:@AbIocView(id=按钮id)Button btn即可。
    一、.各种滑动嵌套问题
    1、ListView + ViewPager
    [图片上传中。。。(1)][图片上传中。。。(2)][图片上传中。。。(3)]
    2、SlidingMenu + ViewPager
    [图片上传中。。。(4)][图片上传中。。。(5)]
    二、数据库操作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();;
    [图片上传中。。。(7)]
    [图片上传中。。。(8)]
    [图片上传中。。。(10)][图片上传中。。。(11)]

    3、线程池 AbTaskPool
    [图片上传中。。。(13)][图片上传中。。。(14)]
    4、异步任务:AbTask (void)
    [图片上传中。。。(15)][图片上传中。。。(16)]
    5、异步任务:AbTask (object)
    [图片上传中。。。(17)][图片上传中。。。(18)]
    四、图片下载器
    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
    [图片上传中。。。(19)]
    [图片上传中。。。(20)][图片上传中。。。(21)]
    Drawable 分别为:圆形表的背景,时、分、秒 针;
    2、数字时钟:AbNumberClock NumberClockActivity.java
    [图片上传中。。。(22)][图片上传中。。。(23)][图片上传中。。。(24)]
    [图片上传中。。。(25)]
    3、台历:AbCalendar DeskCalendarActivity.java
    ** **[图片上传中。。。(26)][图片上传中。。。(27)][图片上传中。。。(28)]
    [图片上传中。。。(29)][图片上传中。。。(30)]
    [图片上传中。。。(31)]
    六、旋转效果
    ** **1、图片适配
    CarouselImageView carousel = (CarouselImageView) findViewById(R.id.carousel);
    [图片上传中。。。(32)][图片上传中。。。(33)]
    构建:List<Drawable> 对象
    [图片上传中。。。(34)][图片上传中。。。(35)]
    像ListView 方式一样使用:用适配器
    CarouselImageAdapter adapter = new CarouselImageAdapter(this,mDrawables,true);
    carousel.setAdapter(adapter);
    单击和选择事件:
    [图片上传中。。。(36)][图片上传中。。。(37)]
    2、VIEW适配
    CarouselView carousel = (CarouselView) findViewById(R.id.carousel);
    [图片上传中。。。(38)][图片上传中。。。(39)]
    构建:List<View> 对象
    [图片上传中。。。(40)][图片上传中。。。(41)]
    像ListView 方式一样使用:用适配器
    CarouselViewAdapter adapter = new CarouselViewAdapter(this,mViews,true);
    carousel.setAdapter(adapter);
    单击和选择事件:
    [图片上传中。。。(42)][图片上传中。。。(43)]

    七、侧边栏
    ** **<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)
    [图片上传中。。。(44)][图片上传中。。。(45)]
    //缓存数量
    mAbSlidingTabView.getViewPager().setOffscreenPageLimit(5);
    [图片上传中。。。(46)][图片上传中。。。(47)]
    其它Tab页面需要继承:AbFragment
    2、底部切换TAB
    AbBottomTabView mBottomTabView = (AbBottomTabView) findViewById(R.id.mBottomTabView);
    [图片上传中。。。(48)][图片上传中。。。(49)]
    //缓存数量
    mBottomTabView.getViewPager().setOffscreenPageLimit(5);
    [图片上传中。。。(50)]

    九、图表
    1、等级条图表:AbLevelSeriesRenderer (LevelChartActivity.java)
    1.1 取出LinearLayout
    LinearLayout chartLayout = (LinearLayout) findViewById(R.id.chartLayout);
    1.2 构建图表对象
    AbLevelSeriesRenderer renderer = new AbLevelSeriesRenderer();
    1.3 设置属性
    [图片上传中。。。(51)][图片上传中。。。(52)]
    [图片上传中。。。(53)]
    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)
    [图片上传中。。。(54)][图片上传中。。。(55)]
    [图片上传中。。。(56)]
    [图片上传中。。。(57)]
    [图片上传中。。。(58)]
    3、XY柱图 XYMultipleSeriesRenderer (每条线都是一个:XYSeriesRenderer)
    和XY线图是一个对象;
    上面最后一段
    [图片上传中。。。(59)][图片上传中。。。(60)]
    4、饼图 DefaultRenderer (每块都是一个:SimpleSeriesRenderer)
    DefaultRenderer renderer = new DefaultRenderer();
    [图片上传中。。。(61)][图片上传中。。。(62)]
    5、时间轴图 XYMultipleSeriesRenderer (每条线是一个:XYSeriesRenderer)
    [图片上传中。。。(63)][图片上传中。。。(64)]
    6、XY域图 XYMultipleSeriesRenderer (每条线是一个:XYSeriesRenderer) XYAreaChartActivity.java
    [图片上传中。。。(65)][图片上传中。。。(66)]

    十、进度条
    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(); //点击每一项时的方法

    [图片上传中。。。(67)] //切换或改变到某一项时触发的方法
    [图片上传中。。。(68)]
    //结束
    [图片上传中。。。(69)]
    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) { } });

    [图片上传中。。。(70)]
    5、轮子选择器:WheelActivity.java
    **** 解释:实现类似IOS的日期、时间、数字方面的轮子选择;
    首先要根据需要创建一个布局,如:1,2,3个轮子;
    [图片上传中。。。(71)]
    **[图片上传中。。。(72)] **
    上面的布局创建以后,用下面方法来初始化轮子
    [图片上传中。。。(73)]
    [图片上传中。。。(74)]
    [图片上传中。。。(75)]
    [图片上传中。。。(76)]
    十二、下拉刷新分页
    ****1、普通View下拉刷新
    实现将所有的内容实现下拉刷新,加载更多;
    首先继承AbActivity,并实现 onHeaderRefreshListner,OnFooterLoadListener
    实始化:
    [图片上传中。。。(77)]
    下拉刷新
    [图片上传中。。。(78)]
    上拉加载更多:
    [图片上传中。。。(79)]
    多列的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 显示一个自定义的对话框:背景为暗黑色
    [图片上传中。。。(80)][图片上传中。。。(81)]
    1.2 显示一个自定义的对话框,无背景色

    [图片上传中。。。(82)][图片上传中。。。(83)]
    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框被取消"); } });

    [图片上传中。。。(84)] NetworkWeb 是一个AbHttpUtil的测试类;

    1. refreshing 事件 + Dialog
      [图片上传中。。。(85)]
      4、AlterDialog 系统样式
      [图片上传中。。。(86)][图片上传中。。。(87)]
      [图片上传中。。。(88)][图片上传中。。。(89)]
      [图片上传中。。。(90)][图片上传中。。。(91)]
      5、自定义样式 Dialog + 动画
      ** [图片上传中。。。(92)][图片上传中。。。(93)]**
      [图片上传中。。。(94)][图片上传中。。。(95)]
      ** [图片上传中。。。(96)][图片上传中。。。(97)]**
      ** 6、自定义按钮的位置 (上,中,下,全屏)**
      ** [图片上传中。。。(98)]**
      7、进度条
      ** [图片上传中。。。(99)]**
      ** [图片上传中。。。(100)]**
      十四、HTTP请求
      ** **以下用到操作HTTP的GET,POST请求,同时后面介绍到用队列实现快速高频繁调用方法;
      1、Http工具类:AbHttpUtil
      使用(初始化): AbHttpUtil mAbHttpUtil = AbHttpUtil.getInstance(this);
      mAbHttpUtil.setTimeout(10000);
      调用:
      1.1 get 请求
      [图片上传中。。。(101)]
      1.2 post 请求
      [图片上传中。。。(102)]
      1.3 请求后用 byte[] 字节数组下载(如图片)
      [图片上传中。。。(103)]
      1.4 下载文件
      [图片上传中。。。(104)]
      下载文件时需要有进度条,下面为开始下载,下载进度及下载完成的代码:
      [图片上传中。。。(105)]
      进度条需要有一个VIEW用于显示,VIEW中用到AB的进度条控件

    相关文章

      网友评论

          本文标题:无标题文章

          本文链接:https://www.haomeiwen.com/subject/mqvmcxtx.html