安卓开发 订阅
《Android开发实战体验》是2013年海洋出版社出版的图书,作者是DevDiv移动开发社区。 展开全文
《Android开发实战体验》是2013年海洋出版社出版的图书,作者是DevDiv移动开发社区。
信息
作    者
DevDiv移动开发社区
定    价
55.00元
又    名
安卓开发
书    名
Android开发实战体验
出版时间
2013-1
出版社
海洋出版社
ISBN
9787502784607
页    数
252
子网划分定义
图书目录章节第1章 Android系统架构与初始化流程  1.1 Android发展历史回顾  1.2 系统架构  1.3 初始化流程  1.4 权限安全机制  第2章 Activity简介  2.1 Activity的架构设计  2.2 Activity的生命周期  2.3 旋转屏幕重新加载Activity  第3章 常用UI界面以及实现  3.1 缓冲界面  3.2 宫格界面  3.3 Tab界面  3.4 二级列表  3.5 抽屉效果  3.6 左右滑动效果  3.6.1 系统提供ViewFlipper  3.6.2 自定义ViewFlow  3.7 Gallery  3.8 悬浮框  第4章 ListView使用详解  4.1 ListView与Adapter的关系  4.2 ListView绑定EmptyView  4.3 自定义Adapter  4.4 ListView的使用技巧  第5章 定制控件  5.1 扩展系统控件  5.2 自绘控件  5.3 触屏事件处理  5.4 扩展ViewGroup类  5.5 定义控件属性  5.6 定制控件的style和theme  第6章 Drawable分类汇总  6.1 ColorDrawable  6.2 GradientDrawable  6.3 BitmapDrawable6  6.4 NinePatchDrawable  6.5 InsetDrawable  6.6 ClipDrawable  6.7 ScaleDrawable  6.8 RotateDrawable  6.9 AnimationDrawable  6.10 LayerDrawable  6.11 LevelListDrawable  6.12 StateListDrawable  6.13 TransitionDrawable  第7章 图像操作技巧  7.1 位图资源  7.1.1 加载位图资源  7.1.2 创建位图资源  7.1.3 保存位图资源  7.2 常用的位图操作  7.2.1 View转换为Bitmap  7.2.2 图片圆角处理  7.2.3 图片灰化处理  7.2.4 提取图像Alpha位图  7.2.5 图像变换  7.3 内存溢出(OOM)问题  第8章 布局优化  8.1 复用布局文件  8.2 布局的层次结构  8.2.1 Hierachy Viewer  8.2.2 创建高效的布局  8.2.3 合并布局  8.2.4 提高控件查找效率  8.3 布局文件延迟加载  第9章 消息模型  9.1 UI线程  9.2 消息系统与消息模型  9.2.1 消息系统构成要素和基本原理  9.2.2 消息模型基本原理  9.2.3 消息模型使用方法  9.2.4 Handler常见用法  第10章 网络通信  10.1 使用HttpURLConnection发送Post/Get请求  10.2 设置Proxy访问网络  10.3 实现文件下载断点续传  10.3.1 设计下载任务进度类DownloadBean  10.3.2 创建下载线程并可随时中断线程  10.3.3 设置网络链接读取资源的有效范围  10.3.4 使用RandomAccessFile随机读写文件  第11章 桌面组件AppWidget  11.1 AppWidget框架结构  11.1.1 AppWidget框架类  11.1.2 AppWidget框架相关类  11.2 AppWidget开发  11.2.1 AppWidgetProvider类的使用  11.2.2 AppWidget开发实例  11.2.3 实例改进  第12章 系统服务  12.1 系统服务简介  12.2 系统服务开发  12.2.1 电源服务开发  12.2.2 窗口管理服务开发  12.2.3 Layout扩展服务开发  12.2.4 Activity服务开发  12.2.5 Notification服务开发  12.2.6 闹钟服务开发  12.2.7 KeyGuard服务开发  12.2.8 位置服务开发  12.2.9 Vibrator服务开发  第13章 多媒体开发  13.1 Android多媒体系统简介  13.1.1 系统架构  13.1.2 系统功能  13.1.3 OpenCore简介  13.1.4 OpenMAX简介  13.2 MediaPlayer的使用  13.2.1 初始化和准备播放  13.2.2 播放控制  13.2.3 释放播放资源  13.2.4 视频播放  13.3 音频视频录制  13.3.1 使用Intent录制音频和视频  13.3.2 使用MediaRecorder录制音频和视频  13.3.3 原始音频录制与播放  13.4 Camera使用  13.4.1 运用Intent捕获照片  13.4.2 调用Camera组件捕获照片  13.5 SoundPool类的使用  13.5.1 SoundPool类简介与适用场合  13.5.2 使用SoundPool播放声音  第14章 图片异步加载及缓存  14.1 异步加载与缓存的重要性  14.2 垃圾回收机制与引用类型  14.2.1 Java的垃圾回收机制  14.2.2 Java引用类型  14.2.3 使用软引用构建缓存  第15章 移动广告平台  15.1 移动应用平台发展现状  15.2 移动广告平台发展趋势  15.3 移动广告平台的盈利模式  15.4 选择广告平台  15.4.1 国内移动广告平台简介  15.4.2 平台选择参考标准  15.5 嵌入广告插件  第16章 代码优化技术  16.1 编译前的代码优化技术  16.1.1 尽可能避免创建不必要的对象  16.1.2 方法调用代码优化  16.1.3 代码变量优化  16.1.4 代码过程优化  16.2 内存泄漏代码优化及检测  16.2.1 内存泄漏检测工具——Memory Analyser Tool(MAT)  16.2.2 MAT使用示例  16.3 代码混淆技术  16.3.1 ProGuard简介  16.3.2 ProGuard使用  第17章 加解密  17.1 使用HASH算法(MD5/SHA1)保护应用程序的安全  17.2 使用对称加密算法(BASE 64)隐藏关键信息  17.3 非对称加密算法(RSA)的使用 [1] 
收起全文
精华内容
下载资源
问答
  • 安卓开发必学书籍(30本合集)

    千次下载 热门讨论 2013-05-03 20:13:42
    安卓开发必学书籍(30本合集) 安卓开发必学书籍(30本合集) 免积分 C语言\Android+移植技術.7z C语言\Android_C、C++_开发.7z C语言\JNI程序员指南与规范.rar C语言\NDKjni.rar C语言\多线程的JNI+Native.7z ...
  • 安卓开发技术分享

    千次阅读 2018-11-26 19:38:51
    先占个坑,后面一点点把安卓开发相关的知识系统的整理上来。 一、安卓开发入门 二、安卓常用开发技术框架 三、最新安卓开发技术 四、安卓开发优秀资源 五、软件工程 六、职业规划及进阶 ...

    关注 安卓007 ,免费获取全套安卓开发学习资料

    一、安卓开发入门

    1. 开发环境搭建
    2. 第一个安卓工程

    二、Google官方推荐安卓开发架构全家桶

    Jetpack

    三、安卓常用第三方开发技术框架

    详见:https://blog.csdn.net/yinxing2008/article/details/83623386

    四、安卓开发学习demo项目

    1. wanAndroid
      简介:wanAndroid是鸿洋开的,里面有很多安卓学习的资料。因为他开放了API,现在有很多人都基于他开放的API来开发一个demo app,而且所用的组件一般都比较新。是比较值得学习的,下面给出一款MVP+Retrofit+RxJava+Glide+ARouter的开源项目。
      http://www.wanandroid.com/blog/show/2420

    五、最新安卓开发技术

    1. Kotlin
    2. Flutter
    3. 插件化
    4. 组件化

    六、安卓开发优秀实践

    详见:https://blog.csdn.net/yinxing2008/article/details/82971037

    七、安卓开发优秀资源

    详见:https://blog.csdn.net/yinxing2008/article/details/84560728


    安卓开发入门教程系列汇总

    安卓发展历程及前景

    安卓发展历程
    安卓开发前景展望

    初探安卓

    安装开发工具
    创建第一个安卓工程

    开发语言学习

    Kotlin语言基础

    UI控件学习系列

    UI控件_TextView
    UI控件_EditText
    UI控件_Button
    UI控件_ImageView
    UI控件_RadioButton
    UI控件_CheckBox
    UI控件_ProgressBar
    关注头条号,第一时间获取最新文章:

    展开全文
  • DelphiXE10安卓开发(实战篇)

    千人学习 2019-06-30 17:59:51
    实战方式讲解DelphiXE10的安卓开发,从安卓开发开发环境配置开始讲解,实战讲解如何使用FMX进行安卓开发,App的创建,调试,UI设计、文件系统,处理数据,让学员快速掌握Delphi安卓App的开发
  • Unity 安卓开发

    2020-05-26 15:45:59
    入坑安卓安卓开发环境打包apk 安卓开发环境 笔者是通过Unity Hub安装最新版本的编辑器并在安装时勾选以下选项就ok了。 当然还可以在安装完编辑器后添加这些(but 有些版本没有提供添加模块的选项) 不过不要慌,...

    安卓开发环境

    笔者是通过Unity Hub安装最新版本的编辑器并在安装时勾选以下选项就ok了。
    在这里插入图片描述
    当然还可以在安装完编辑器后添加这些(but 有些版本没有提供添加模块的选项
    在这里插入图片描述
    不过不要慌,如果你不想用最新版本也可以这么干~
    1.安装个最新版本的编辑器并在安装时勾选Android Build Support那些选项。
    2.完成安装后打开编辑器找到配置的路径(Edit=>Preferences=>External Tools),直接把这些路径拷贝到你想要用的那个版本编辑器配置。
    在这里插入图片描述

    打包apk

    打包apk时要先把Player Settings=>Player => Company Name 修改下。

    安卓模拟器无法联网

    AndroidStudio开发文档
    解决方案

    屏幕常亮

            Screen.sleepTimeout = SleepTimeout.NeverSleep;
            Screen.sleepTimeout = SleepTimeout.SystemSetting;  //关闭手机屏幕常亮(按照手机设置)
    

    文件选择器

    下载

    连接真机调试

    1.Unity 勾选Development Build、AutoconnectProfiler、ScriptDebugging、WaitForManagedDebugger。

    2.cmd进入adb所在目录,例:cd D:\Projects\Unity\Footage\JDK_SDK_Gradle\SDK\platform-tools
    输入:adb forward tcp:34999 localabstract:Unity-Test(Unity-Test中的Test对应打包名字)。
    3.Build And Run

    展开全文
  • 安卓开发课程设计报告

    千次阅读 多人点赞 2019-12-17 09:33:54
    综合实践能力创新实训-安卓开发课程设计报告 题 目: 新 闻 客 户 端 学 号: 1705010323 姓 名: 马 志 成 指导老师: 蒋 黎 明 完成时间: 2019年12月15日 安卓开发-新闻客户端 1.设计要求 1.1 技术平台要求 1....

    湖南科技大学计算机科学与工程学院

    综合实践能力创新实训-安卓开发课程设计报告

    题 目: 新 闻 客 户 端

    学 号: 17050103XX

    姓 名: 白马

    完成时间: 2019年12月15日

    安卓开发-新闻客户端

    1.设计要求

    1.1 技术平台要求

    1.熟悉 Android Stuido、Eclipse、SQLite 等常用 Android 开发工具。

    2.熟悉一种语言,主要使用java语言开发。

    3.设计并实现一个具体的 Android 应用系统,本次课程设计选择的是新闻客户端的题目。

    (1)对选定的新闻客户端项目进行需求分析,写出需求说明书,并搜集、整理所需素材。

    (2)根据项目需求,进行数据库(如果需要数据库的话)的概要设计与详细设计。

    (3)根据需求说明进行项目的功能设计,画出每个界面的原型。进行详细设计,实现每个模块的功能。

    (4)对项目进行部署与测试。

    (5)分析总结项目的创新点和存在的不足,提出优化思路。

    1.2 功能要求

    对于要完成的新闻客户端项目需要做到以下功能:

    1.掌握 Android 中的菜单及导航框架。

    随着安卓开发的盛行,安卓应用占据了手机APP市场的绝大部分份额。随着市场的推动和技术的发展与沉淀,Android开发领域产生了很多实用并且容易开发的各类包和小型框架,例如速展示Adobe Afeter Effect(AE)工具所作动画的框架客户端组件间异步通信的框架lottie-android、RxAndroid、侧滑菜单栏框架SlidingMenu、提供场景转换过渡能力的动画框架Material-Animations等众多矿建,使得Android开发的样式更加的多样化、用户体验更加的高,开发周期更加短。

    2.掌握自定义布局.

    掌握安卓的五大布局,对于五大布局的使用场景进行了解,并且能够在自己的项目里面合理选择和使用安卓的界面布局。

    3.掌握 Android 中的数据存储

    对于Android的五大数据存储方式进行熟悉与使用。在本次的新闻客户端的课程设计的开发中,Android的数据存储使用到了SharedPreferences数据存储和网络断的数据获取的方法。

    4.掌握安卓项目的运行方式和网络端数据的获取、处理和展示, 能够将从网络中夺取的数据进行处理利用listView显示在APP中,能够对于内容进行查看。

    1.3 其他要求

    在课程设计的过程中要求以个人为小组完成实验项目的开发,要求从界面的设计到逻辑java代码的实现,图标的排版,运行、测试和实验报告的撰写都由个人完成。

    2.背景介绍

    随着移动通信与Internet向移动终端的普及,网络和用户对移动终端的要求越来越高,而wWindows Mobile, PalmoS等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开发性很强的平台。经过多年的发展,第四代代数字通信(4G) 技术活动了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着4G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google 为此于2007年11月推出了一个专为移动设备设计的软件平台一-Android。

    不仅如此,在科技的巅峰时期,第五代数字通信(5G的出现)将会把Android开推上一个更高的台阶,等多的、更多元化的、更快速的安卓应用将诞生。
    Android是一套真正意义上的开发性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android是由Linux+Java 构成的开源软件,允许所有厂商和个人在其基础_上进行开发。Android平台的开放性等特点既能促进技术(包括平台本身)的创新,又有助于降低开发成本,还可以是运营商能非常方便地制定自己的特色化的产品。因此,它具有很大的市场发展潜力。


    3.需求分析

    在互联网和IT技术快速发展的这个社会,伴随着Android操作系统的盛行,基于Android发的的基于Android的应用已经非常盛行。而且安卓开发更将面向普通永华,这些用户更关注用户体验因此利用安卓实现多媒体应用十分必要。
    在以前的传统认知中人们获取新闻的方法一般来源于收听广播、阅览报纸、观看电视新闻、但是对于4G发展、5G马上盛行的新世纪,简单的信息获取已经完全不能能满足当代人的需求,一款可以直接在手机APP上阅览新闻的APP也就显得尤为重要。利用APP查看新闻、时事政治、以及热点新闻将是一种趋势。在这样的趋势下设计了这个Android手机新闻客户端APP。

    4.设计目的

    以实践为目的,通过一个或者多个完整Android项目的开发从而从实际中掌握Android开发的流程与开发技术。将Android开发课程中的诸多知识点运用于实际开中。熟悉Android开发工具的使用,了解并学会解决安卓开发中常见的错误。理解整个流程。学会框架的使用。

    5.技术介绍

    1.开发工具简介

    Android Studio是一个Android的开发环境,它是基于IintelliJ IDEA,类似于Eclipse,Android Studio提供了集成的开发环境和调试,从整体上不论是开发的效率还是开发的便捷程度都是比Eclipse简洁方便很多。在程序的调试方面也远比Eclipse方便很多。

    2.开发语言简介

    Android开发使用的是java+XML语言的方式。Java影响深远的面向对象编程语言。拥有着多种语言的特点,并且是跨平台的。因此java具有强大和简单易用两个特点。可以用来编写桌面应用程序、Web应用程序、分布式的系统和嵌入式的系统等。
    XML是一种简单的可扩展标记语言。是SGML的一个子集合,也就是他的简化版本,非常适合与web应用的开发和其他数据源之间的数据交换。

    3.使用技术介绍

    1.整体实现思路

    1.仿照市面上常见的软件,使用底部与顶部导航栏结合,侧滑的方式实现新闻数据的展示
    2.整体的页面布局使用的是RecycleView的嵌套的方式
    3.底部的4个Fragment切换和在每个Fragment中的ViewPage切换, 采用的是LuckyJayce/ViewPagerIndicator的开源框架
    在这里插入图片描述
    4.新闻列表采用的是RecyclerView的方式
    5.顶部的沉浸式的状态栏使参考此博客
    6.新闻详情的实现采用的方法是通过Android自带的android.text.Html类解析Html和html下标签的图像
    7.为数据的隐私和良好的用户体验在一般新闻客户端的基础上添加了登录注册模块以及切换主题等的功能。

    2.目前存在的问题

    1. 对于网页html的解析有一些问题,导致分类模块的不稳定
    2. 由于解析的问题,有事刷新后没有显示相应信息

    6.合计思路

    6.1功能分析

    该设计实现了在手机端浏览新闻的应用程序。用户通过下载应用程序,进入注册应用程序可以在程序中浏览各种新闻。可以砸热点、体育等多个板块之间进行切换。程序通过网络和相关的协议从网络中获取新闻数据,通过程序的适配器和布局文件将数据进行展示。
    用户通过注册登录的方式进入app中,然后对新闻进行浏览,可以对于浏览的主题进行切换,也可以通过menu浏览APP的相关介绍。在整体的布局上使用了底部菜案栏,上面分类栏的方式。利用适配器将页面和相对应的listitem适配茹相对应的文件中。对新闻进行展示。

    6.2 数据流图

    新闻客户端数据流图
    在这里插入图片描述

    6.3 客户端状态图

    在这里插入图片描述

    6.3 模块划分

    程序划分为登录模块、主页模块、滑动模块和数据展示模块和其他模块。登录用户用户的登录还验证,同时具有不同用户的信息隐藏的功能。主页模块是对于数据的初步展示和其他滑动模块的门额进入接口。滑动模块用于新闻的分类和数据的切换。其他模块用于对用户的信息进行查看和对于程序的主题进行更改、查询程序的有关信息。数据是通过url连接来自网络的数据。经过处理显示在新闻客户端。

    6.4 程序层次图

    在这里插入图片描述

    7.程序实现及代码分析

    7.1用户登录

    用户登录模块分为欢迎界面和用户登录模块,使用用户登录的作用是因为事先一个用户一个账号,对于软件的操作内容和日志进行保密。用户可以在登录界面进行账号和密码的输入然后登录。如果没有账号和秘密,可以点击“注册”按钮进行注册,然后登录。在用户没有注册的时候会提示不存在账号请先注册,注册的人员如果输入账号和密码错误则显示提示信息。


    在这里插入图片描述
    在这里插入图片描述
    主要逻辑代码如下:

    public class welcome extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //getSupportActionBar().hide();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        Button welcome_button= (Button)findViewById(R.id.wecome_button);
        final VideoView welcome_Videoview =(VideoView)findViewById(R.id.weclome_Viderview);
        welcome_Videoview.setVideoURI(Uri.parse("android.resource://"+this.getPackageName()+"/"+R.raw.welcome));
        welcome_Videoview.start();
        welcome_Videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                welcome_Videoview.start();
            }
        });
        welcome_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(welcome_Videoview.isPlaying()){
                    welcome_Videoview.stopPlayback();
                }
                Intent mIntent = new Intent(welcome.this, LoginActivity.class);
                startActivity(mIntent);
            }
        });
    }
    }
    登录主要代码:
    btn_login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (et_name.getText().toString().equals(user_name) && et_password.getText().toString().equals(password)) {
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(intent);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString("user_name", user_name);
            editor.putString("password", String.valueOf(password));
            editor.commit();
        } else {
            Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_LONG).show();
        } }});
    

    7.2 主页面显示

    主页面显示主要完成的是从用户登录跳转到主页面,同时在主页面显示。在主页面建立相应的按钮,完成侧滑和类型的转换,同时在没有滑到相应的位置的时候完成数据的提前加载。主页面是其他页面的前提,也是进入口。

    主页面界面如图:
    在这里插入图片描述
    在这里插入图片描述
    主页面的逻辑代码如下:

    public class MainActivity extends AppCompatActivity {
    private IndicatorViewPager indicatorViewPager;
    private SystemBarTintManager tintManager;
    private ViewPager tabmain_viewPager;
    private LinearLayout main_learn;
    private Indicator indicator;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initWindow();
        setContentView(R.layout.activity_main);
        SViewPager viewPager = (SViewPager) findViewById(R.id.tabmain_viewPager);
        Indicator indicator = (Indicator) findViewById(R.id.tabmain_indicator);
        indicatorViewPager = new IndicatorViewPager(indicator, viewPager);
        indicatorViewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
        // 禁止viewpager的滑动事件
        viewPager.setCanScroll(false);
        // 设置viewpager保留界面不重新加载的页面数量
        viewPager.setOffscreenPageLimit(4);
    
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setTitle(R.string.index_name);
        setSupportActionBar(toolbar);
        invalidateOptionsMenu();
    
    }
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @TargetApi(19)
    private void initWindow() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            tintManager = new SystemBarTintManager(this);
            tintManager.setStatusBarTintColor(getResources().getColor(R.color.tab_top_background));
            tintManager.setStatusBarTintEnabled(true);
        }
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
    
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            Intent intent = new Intent(MainActivity.this, SettingActivity.class);
            startActivity(intent);
            //return true;
        }
        if (id == R.id.action_settings_bg) {
              //tabIcons = {R.style.AppTheme_Base};
            main_learn = (LinearLayout) findViewById(R.id.main_learn);
            main_learn.setBackground(Drawable.createFromPath("#DD2196F3"));
            //return true;#673AB7 action_wholeday
    
        }
    
        if (id == R.id.action_wholeday) {
            Intent intent = new Intent(MainActivity.this, MyInformatimActivity.class);
            startActivity(intent);
            //return true;#673AB7 action_wholeday
    
        }
        return super.onOptionsItemSelected(item);
    }
    private class MyAdapter extends IndicatorViewPager.IndicatorFragmentPagerAdapter {
        private String[] tabNames = {"新闻", "阅读", "热点", "政要"};//, "我", R.drawable.maintab_5_selector
        private int[] tabIcons = {R.drawable.maintab_1_selector, R.drawable.maintab_2_selector, R.drawable.maintab_3_selector,
                R.drawable.maintab_4_selector, R.drawable.maintab_5_selector};
        private LayoutInflater inflater;
    
        public MyAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
            inflater = LayoutInflater.from(getApplicationContext());
        }
        @Override
        public int getCount() {
            return tabNames.length;
        }
        @Override
        public View getViewForTab(int position, View convertView, ViewGroup container) {
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.tab_main, container, false);
            }
            TextView textView = (TextView) convertView.findViewById(R.id.tv_tab_content);
            textView.setText(tabNames[position]);
    
            ImageView image = (ImageView) convertView.findViewById(R.id.iv_tab_img);
            image.setImageResource(tabIcons[position]);
            return convertView;
        }
    
        @Override
        public Fragment getFragmentForPage(int position) {
            Fragment mainFragment;
            mainFragment = new FirstLayerFragment();
    
            Bundle bundle = new Bundle();
            bundle.putString(FirstLayerFragment.INTENT_STRING_TABNAME, tabNames[position]);
            bundle.putInt(FirstLayerFragment.INTENT_INT_INDEX, position);
            mainFragment.setArguments(bundle);
    
            return mainFragment;
        }
    }
    

    }

    7.3 新闻展示部分以及其他部分

    新闻展示部分是指在选中了相应的分类模块的新闻后点击相应的新闻的listitem部分之后会显示新闻的具体内容,这部分的实现是使用的Android中listview和适配器的使用部分。在对数据进行了处理之后再listitem中进行显示。
    其他部分指的是在点击“个人中心”和右上方的下拉menu之后会展示相应的功能,包括了主题的切换功能和关于啊APP的介绍部分。
    在这里插入图片描述
    在这里插入图片描述
    新闻详情展示页面和其他部分页面如图
    适配器部分代码:

    public class HorizontalImageRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnTouchListener{
       public HorizontalImageRecyclerViewAdapter(Context context, PhotoSet photoSet, RecyclerView recyclerView) {
        mContext = context;
        this.recyclerView = recyclerView;
        mLayoutInflater = LayoutInflater.from(context);
        this.photoSet = photoSet;
    
        Resources r = context.getResources();
        float leftAndRightMargin = r.getDimension(R.dimen.list_margin_left_and_right);//14px
        float imageMargin = r.getDimension(R.dimen.list_margin_top_and_bottom);//20px
    
        viewConfiguration = ViewConfiguration.get(context);
        imageHeight = (int)r.getDimension(R.dimen.list_big_image_item_height);
        imageWeight = (int)(MyApplication.width - (leftAndRightMargin + imageMargin) * 2) / 3;
    }
    
    public void setPhotoSet(PhotoSet photoSet) {
        this.photoSet = photoSet;
    }
    
    @Override
    public int getItemViewType(int position) {
        return position == 0 ? 0 : position;
    }
    
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
        View hold = mLayoutInflater.inflate(R.layout.item_sub_image, parent, false);
        this.parent = parent;
    
        ImageViewHolder holder = new ImageViewHolder(hold, imageWeight, imageHeight, viewType);
        holder.imageView.setTag(viewType);
        holder.imageView.setOnTouchListener(this);
        return holder;
    }
    
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (photoSet == null || photoSet.getPhotos() == null) {
            setNetworkImageView(((ImageViewHolder) holder).imageView, "");
        } else {
            setNetworkImageView(((ImageViewHolder) holder).imageView, NeteaseURLParse.parseWebpImageForTextAndImageType(photoSet.getPhotos().get(position).getTimgurl(), imageWeight));
        }
    }
    
    @Override
    public int getItemCount() {
        return (photoSet == null || photoSet.getPhotos() == null) ? 3 : photoSet.getPhotos().size();
    }
    
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("HorizontalImage", "child onTouchEvent" + event.getAction());
        long pressDuration = System.currentTimeMillis() - pressStartTime;
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                pressStartTime = System.currentTimeMillis();
                pressedX = event.getX();
                pressedY = event.getY();
                isIntercept = false;
                break;
            }
            case MotionEvent.ACTION_MOVE:
                if (pressDuration <= ViewConfiguration.getJumpTapTimeout()
                        && distance(pressedX, pressedY, event.getX(), event.getY()) <= viewConfiguration.getScaledTouchSlop()) {
                } else {
                    isIntercept = true;
                }
                break;
            case MotionEvent.ACTION_UP: {
                if (pressDuration <= ViewConfiguration.getJumpTapTimeout()
                        && distance(pressedX, pressedY, event.getX(), event.getY()) <= viewConfiguration.getScaledTouchSlop()) {
                    sendIntent(v);
                } else {
                    isIntercept = true;
                }
                break;
            }
        }
    
        return true;
    }
    

    项目目录以及部分代码编写风格如图:
    在这里插入图片描述

    8.总结

    本次的安卓开发课程设计收获颇丰。从整体上看Android课程设计不是很难,但是也不简单。不是很难是因为开发的环境、语言都是之前上安卓课的时候接触过的,学过的东西;也不简单是因为本次的课程设计整体上涉及了安卓开发的绝大部分的知识点内容。需要把学学的各大安卓的知识点实现在自己所写的项目中。


    从课设题目的选择到到布局的设计,图标的寻找、再到代码的逻辑实现和单元测试等各个部分都由个人完成。在这个过程中收获很多,但是也遇到了很多的问题。

    关于收获,在课程设计的过程中,我从总体上从工程的角度对安卓开发有了很深一步的了解,整体上对安卓开发的流程进行了实践性的学习。同时学会使用了安卓相应的开发框架,例如,在本次的新闻客户端的开发中学会使用了ViewPagerIndicator的框架,对于数据的侧滑页面的数据浏览使用了slidermenu的框架。因为新闻端的数据是来自于网上,所以对于使用hppt协议获取数据的相应操作方法也有了一定的了解。同时也学会了使用侧滑等方法对app的页面进行布局。在之前的安卓上课过程中对于每一个知识点都是分开做实验的,所以对于整体的工程的理解没有那么深刻,对面面向对象编程有了更多的理解。
    但是在开发的过程中也出现了很多的困惑与问题。

    首先在设置侧滑页面实现侧滑后界面的转变,还有在设置导航栏模块的跳转的时候,在适配器的使用方面遇到了很多的问题,导致一直报错,
    其次,对于网络上数据的存储和处理展示不是很理解,导致在开发的过程中花费了较多的时间在这一部分内容。在使用网络数据的时候,不会将数据转化,然后进行显示,出现了很多的问题,之后慢啊慢才解决。特别是寻找数据的尾部和起始位置花费了比较多的时间。


    在使用适配器对导航栏的的pageview进行适配的时候也出现了一些问题,参数的传递出现问题,listitem不能正常显示等等,最后在重新学习有关适配器知识,理解了原理后重新编程,bug也随之解决了。课程设计也是磨炼性子的一种方式,为了做的更好看一点,我尝试了布局方面的方案,配色、选择图标图片等等,最后感觉不论是从布局还是从基本功能的实现都基本达到了自己的要求。
    总之,本次的Android开发课程设计收获很大,我不仅巩固了之前上课学到的知识,而且在开发过程中遇到问题解决问题,在这个过程中又学到了很多的新东西,可以说是受益匪浅。

    展开全文
  • 安卓开发IDE

    千次阅读 2017-11-16 15:08:03
    去年,2015年年初,各大安卓开发群大部分大牛在用Eclipse+Genymotion开发APP,初入群询问大家也都推荐这种方式,因为毕竟这在那时候就是主流。 几乎所有搜到的安卓开发教程讲师都是用Eclipse。当时,Android Stud

    什么是主流的开发安卓APP的方式?

    我是去年4月份接触的Android开发,因此特别有感触,可以明显的感受到安卓APP主流开发方式的改变。

    去年,2015年年初,各大安卓开发群大部分大牛在用Eclipse+Genymotion开发APP,初入群询问大家也都推荐这种方式,因为毕竟这在那时候就是主流。

    几乎所有搜到的安卓开发教程讲师都是用Eclipse。当时,Android Studio已经出现了差不多两年,但是因为其占用内存较大和BUG较多因此没有出现在众人面前。

    到了2015年中旬6月份左右吧,谷歌宣布Android Studio将取代Eclipse成为官方推荐的开发工具。

    那时候,我下载来尝试了一番,当时我的小笔记本I5双核四线程、4G内存、5000转硬盘实在受不了那种五六分钟的启动等待和90%的电脑资源占用率,就删掉了。

    当时,各大论坛和开发群都在吐槽Android Studio的卡顿,一些保守的开发者继续推荐新人Eclipse作为开发工具。

    到了2015年12月份,我分期半年加了4G内存和换了128G的固态硬盘。(电脑性能指数级提升( ̄y▽ ̄)╭ Ohohoho…..)

    然后再安装AndroidStudio,简直没有压力了,开了三个虚拟机简直没有问题。

    年后,Android Studio 1.0正式版出来了,BUG基本没有遇到过了,那时,主流终于开始改变了。这个从Github的有关Android的开源项目就可以看出来了。

    现在AndroidStudio已经2.2正式版了,觉得开发安卓就是一种享受了。

    真正的大牛是不拘泥于IDE的,SublimeText加上编译打包命令就可以弄出APP。但是对于新人的我们,就十分依赖IDE。而IDE会决定着我们的开发热情和效率。


    IDE

    曾经的主流,Eclipse+Genymotion

    关于Eclipse搭建安卓开发环境可以看这篇博文 ↓

    http://pwcong.me/2016/09/05/%E4%B8%80%E6%AD%A5%E6%AD%A5%E6%9D%A5%E9%85%8D%E7%BD%AE%E5%AE%89%E5%8D%93%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83ADTBundle/


    1. 安装Genymotion

    默认的虚拟机启动及其困难,也较为卡顿,这时候我们需要一个替代的虚拟机Genymotion了,下载地址在这里 ↓

    https://www.genymotion.com/download/

    当然前提是你要有个账号。

    下载安装过程就不细说了,选择教育|学习|个人使用版本就行了。

    安装完毕后,打开,用账户登陆(没有就去注册),下载自己想要的虚拟机版本,设置分辨路和内存。


    2. Genymotion和Eclipse链接

    至于链接就需要装个插件了,和安装ADTPlugin一样, 
    01

    接着输入插件地址:http://plugins.genymotion.com/eclipse

    02

    然后等待以下,把下面选项 Group items by category 选项勾弄掉,接着就出现插件包了,选上就Next,同意,无乱什么都选择Yes,等待下载安装直到完成。

    下载安装完成重启Eclipse后会发现多了个这个图标 
    04

    点击以下,会弹出警告,让你设置Genymotion和安装目录,设置你刚才安装的Genymotion的目录,接着确定就行了。

    剩下的就一样的了,点击上面那个图标打开虚拟机,然后选择启动虚拟机。

    在运行项目之前,先设置以下运行配置 
    05

    选择如下 
    06


    现在的主流,AndroidStudio+Genymotion

    1. 安装Android Studio

    AndroidStudio的下载地址在下面 ↓ (不要怀疑(→_→),下面那个就是是谷歌官网下载地址)

    https://dl.google.com/dl/android/studio/install/2.2.0.12/android-studio-bundle-145.3276617-windows.exe

    安装过程同样不在多说,一直下一步到完成就行了。

    特别注意! 
    安装路径不要出现任何中文!!! 
    不要出现任何中文!!! 
    不要出现任何中文!!!

    2. Android Studio和Genymotion链接

    Genymotion安装上面已讲,Android Studio链接Genymotino同样是安装插件,很简单,打开设置 
    07

    在Plugins选项中输入genymotion,搜索到后点击旁边的install,因为我安装了所以显示“Uninstall” 
    08

    如果搜不到就点击下面搜索进行安装 
    09

    一直同意,Next,等待安装完毕后重启。

    重启后出现下面的图标。 
    10

    点击打开,会弹出错误,说没设置Genymotion目录,和上面一样,到设置里设置。 
    11

    后面就一样的了,点击小图标来选择启动虚拟机,接着运行项目。

    展开全文
  • SDK software development kit 软件开发工具包 在安卓开发的所有事情,都是使用Java这个语言对Google公司提供的类进行着种种的操作,所以只要懂得Java,其实安卓开发并没有很大的难度。...
  • 安卓开发资源整理总结

    千次阅读 2020-09-06 08:16:50
    安卓开发之入门介绍(安卓在这里建议不作为大家入门语言) https://pan.baidu.com/s/1X1n4FP5j8QyasKwjO5jCdg vy0t 零基础安卓入门 https://pan.baidu.com/s/13-7mSsQNCRmoti7usTzzaA au30 安卓开发之服务器web教程 ...
  • 搭建安卓开发环境

    千次阅读 2018-09-06 14:54:15
    如何配置安卓开发环境 学习安卓的第一步就是配置安卓的开发环境,我在这简单的讲解一下我安装开发环境的过程。 Android studio 我们需要安装Andriod SDK ,开发工具以及安卓模拟器。使用Android studio可以...
  • 安卓开发工具对比

    千次阅读 2017-04-21 14:37:13
    安卓开发工具的比较
  • 嵌入式安卓开发

    2014-12-05 11:22:16
    安卓开发说白了就是嵌入式里的一项,嵌入式包含的产品有很多,其中安卓开发是现在最火爆的一项,安卓开发比起嵌入式要容易的多,如果想在嵌入式这边发展在这方面做得不错,可以去看看。 嵌入式系统是一种专用的...
  • 在线等,比较急,请各位大神帮帮忙 ...现在的情况是这样的,假如想从别人的视频直播网站中截取到当前视频的直播源信息,然后在我们这边转换成全景vr视频来播放,在安卓开发中可以实现这个功能吗?难度大不大?
  • 安装安卓开发环境

    2018-09-05 14:03:57
    如何配置安卓开发环境 1、前言 对于一个安卓新手来说安装安卓的开发环境第一次还是比较麻烦的,博主经过一天的时间终于折腾出了结果,那么下面博主就来分享一下踩过的坑,希望能够帮助到一些人。 (前提是大家...
  • 很多时候我们有让别人安装我们安卓项目的需求,但是很多安卓开发小白在导出apk的时候总是遇到各种各样的问题,如果不是最后完工需要导出apk的话,可以直接让对方安装: F:\项目名称\app\build\outputs\apk\debug下的...
  • 安卓开发中类似微信短视频如何做缓存 求实列 安卓开发中类似微信短视频如何做缓存 求实列
  • github项目之安卓开发小助手

    千次阅读 2016-11-25 13:27:46
    安卓开发小助手是我开发的一个小工具集:现在主要有下面几方面的内容:1.android develop helper—-安卓开发小助手 安卓开发小助手的主界面:2.显示手机所有的应用详细信息可以显示手机所有的应用的详细信息,可以对...
  • 安卓开发指南

    2011-11-04 13:51:33
    欢迎您阅读安卓开发指南! 该指南提供了开发安卓应用程序的相关知识和有关平台特性的相关文档。其中探讨了安卓背后的设计思想,用于创建安卓应用的框架,开发及测试安卓应用的工具和发布应用的平台。该指南含有除框架...
  • 安卓开发工具汇总,开发人员必备!安卓开发过程中需要用到各种工具,作为一名安卓开发人员,有木有感到亚历山大,那么多工具!今天给大家汇总了一下安卓开发工具,安卓开发人员必备利器!
  • 2018年的安卓开发环境搭建

    万次阅读 2018-12-01 18:05:36
    记得超早以前我就弄过一次Eclipse上的ADT安卓开发环境搭建,不过过了这么多年,安卓系统已经更新换代这么多次,开发工具也早就换成了Android Studio。正好这几天看了一下当年买了没怎么看的安卓开发书籍,顺便更新一...
  • 安卓能够开发苹果手机上的游戏么?苹果手机的游戏是使用安卓开发的么?
  • Eclipse+ADT+夜神安卓模拟器 搭建安卓开发环境 运行环境 windows 7 1、安装JDK 2、安装Eclipse 3、eclipse离线安装ADT插件 3.1通过Android SDK Manage添加新的软件包 4、安装夜神安卓模拟器 1、安装JDK 略 ...
  • 安卓开发——高德地图SDK简单开发

    千次阅读 2019-03-29 12:26:47
    本篇记录简单的高德地图的安卓开发的定位功能 若还未注册高德地图的开发者,可以进行注册来获取KEY来调用高德地图的API。 但在注册应用的时候需要输入sha1值和packageName,如下图: 要获取sha1值,可以直接打开...
  • 安卓开发工程师职业发展规划

    千次阅读 2017-12-28 09:21:28
    Android安卓移动开发工程师职业规划图,包括安卓开发的发展晋升路线(技术专精和技术转产品两条晋升路线)
  • 使用 Android Studio 搭建安卓开发环境

    万次阅读 2019-09-15 20:36:23
    使用 Android Studio 搭建安卓开发环境,方便、快捷。因为 Android SDK 等下载已经集成到Android Studio 的安装中 1、官网下载Android Studio 编辑器 首先,访问谷歌中国开发者网站下载Android Studio 编辑器:...
  • 请问各位安卓开发 从网上获取数据时 怎么知道url 比如我想开发一个健康食谱 怎么知道他的url借口是多少啊 小白求助
  • 安卓开发闹钟,要求用户退出应用后(后台清理)仍能定时提醒。是否可以实现?如何实现?目前使用alarmmanager broadcastreceiver service实现,三星android5测试没问题,小米华为全部失败,是否有解决方案?
  • 大学生自学安卓开发,想要入手一部安卓手机,也可以当调试用的,请问对手机有什么要求,必须要安卓原生系统吗?
  • 安卓开发-推送通知

    2019-12-31 15:55:14
    安卓开发-推送通知 开发环境:MacbookPro Catalina + Android Studio 3.5.3 1. 新建一个Empty Activity工程 工程名为:TestNotification02 2. 在对应的Layout文件中加入三个控件 两个EditText分别用来输入通知的标题...
  • 安卓开发中去除标题栏

    千次阅读 2017-07-05 23:15:32
    坚持写技术博客-----------tboftb 今天学习中又遇到了一个常见的功能操作...安卓开发中如何去除标题栏呢?一般我们网上百度的话,见到最多的应该就是在MainAcitivity中加一行代码 requestWindowFeature(Window.FEATU
  • 安卓开发之调用摄像头

    千次阅读 2018-04-07 20:14:51
    作者:郭霖最近一直在学习安卓开发,却从来也没有做过相应的记录,下面我们要介绍的时候运用手机多媒体资源之手机摄像头的调用首先我们创建一个CameraAlbumTest项目,然后修改activity_main.xml中的代码 我们就简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,564
精华内容 18,225
关键字:

安卓开发