精华内容
下载资源
问答
  • 【前端】移动端布局--移动端app分类
    2019-06-18 14:32:36

    1、Native App 原生app手机应用程序
    使用原生的语言开发的手机应用,

    Android系统用的是java

    iOS系统用的是object-C

    特点:比较快捷的使用设备端提供的接口,处理速度上有优势。

    2、Hybrid App 混合型app手机应用程序
    混合使用原生的程序和html5页面开发的手机应用

    控件:UI webview 可以假装网页,加载网址,直接有原生打包生成app

    遇到设备端的拍照、音频处理、视频录制等等操作,需要使用原生方式调取,HTML5只是提供了展示形式,采用的操作javascript;

    中间件:phonegap appcan 生成app应用。

    特点:展示方面开发效率比原生开发效率更高,人员成本,时间成本上;
     

    3、Web App 基于Web的app手机应用程序
    完全使用html5页面加前端js框架开发的手机应用

    例如微信中的公众号,创建桌面快捷方式,直接进入公众号。

    更多相关内容
  • 主要为大家详细介绍了Android实现京东App分类页面效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 基于技术整合模型的教育类APP分类研究.pdf
  • 2020年度App分类排行.pdf
  • 2018年度APP分类排行榜.pdf
  • 2016年度中国APP分类排行榜.pdf
  • 2019上半年度APP分类排行.pdf
  • 2020上半年度APP分类排行.pdf
  • uni-app 侧边导航分类,适合商品分类页面uni-app-left-navigation-master.zip
  • APP分类sql文件

    2016-10-26 15:51:14
    包含了基本的游戏分类,采用父子关联的方式存储。
  • 移动App的类别 app就是可以运行在移动设备(手机,平板电脑)上的应用。移动是相对于运行在台式电脑,笔记本电脑这种“固定”的设置而言。 常见的APP类别: 原生App(navtive app) 网页App (WebApp ) 混合App ...

    移动App的类别

    app就是可以运行在移动设备(手机,平板电脑)上的应用。移动是相对于运行在台式电脑,笔记本电脑这种“固定”的设置而言。

    在这里插入图片描述

    常见的APP类别:

    1. 原生App(navtive app)
    2. 网页App (WebApp )
    3. 混合App (HybridApp)
    4. 其他类型(小程序/快应用等等) 微信 /支付宝 /百度/抖音/头条/qq/钉钉/高德…快应用

    NativeApp(原生App)

    原生App 是最纯真的开发方式,可以直接运行在手机操作系统中。

    原生应用程序是某一个移动平台(比如iOS或安卓)所特有的,使用相应平台支持的开发工具和语言(比如iOS平台支持Xcode和Objective-C,安卓平台支持Eclipse和Java)开发。原生应用程序看起来(外观)和运行起来(性能)是最佳的。

    • 它针对不同的手机操作系统,开发不同的软件。历史上存在过的手机操作系统:
      • Symbian(中国大陆译名为“塞班”,其他地区则直接使用英文名称“Symbian”),一种移动操作系统,由诺基亚公司拥有,广泛使用于诺基亚手机上,2013年后停止发展。
      • Windows Phone。微软公司。
      • BlackBerry。2016年7月4日,黑莓宣布正式放弃BlackBerry 10系统。
      • IOS。2007年初苹果推出iPhone,搭载iOS操作系统 。
      • Android。2007年9月谷歌推出Android操作系统,并开放源代码。
    • 现在就只有iOS和Android两大系统,需要使用各自语言开发各自App。 (需要两拨人员各做的,但是各做各的功能,其代码完全不能复用)

    原生App的现状

    iOS:

    • 语言:Object-C、Swift
    • 开发工具:XCode
    • 操作系统:macOS

    Android:

    • 语言:Java、Kotlin
    • 开发工具:Eclipse、Android Studio
    • 操作系统:Windows、macOS、Linux 都支持

    原生App的优点

    优点是速度快,性能高,用户体验效果好。 根据硬件操作系统不同,来开发不同的程序。

    性能和体验都是最好的, 用的都是本系统的原生组件,没有网络渲染问题。

    原生App的缺点

    开发和发布成本高 ,需要专业的安卓 和 ios开发人员 ,ios 系统闭环 , 应用需要上传appStore。更新麻烦,无法跨平台,Android和iOS都需要单独开发,而且开发比较复杂,所以开发成本非常高、开发周期也比较长。升级比较麻烦,每次升级都需要下载安装包,而且iOS每个版本还得经过App Store的审核,Android和iOS很难同步发布。

    webApp(网页App)

    移动端的网站,常被称为H5应用,说白了就是特定运行在移动端浏览器上的网站应用。一般泛指 SPA(Single Page Application)单页面应用模式开发出的网站,与MPA(Multi-page Application)对应。

    M站演示

    在这里插入图片描述

    WebApp的优点

    1. 开发成本低,可以跨平台,调试方便,开发速度最快。

      webapp一般只需要一个前端人员开发出一套代码,然后即可应用于各大主流浏览器(特殊情况可以代码进行下兼容),没有新的学习成本,而且可以直接在浏览器中调试。

    2. 维护成本低:

      同上,如果代码合理,只需要一名前端就可以维护多个web app。

    3. 更新最为快速:

      由于web app资源是直接部署在服务器端的,所以只需要替换服务器端的文件,用户访问时就已经更新了(当然需要解决一些缓存问题)。

    4. 无需安装App,不会占用手机内存:

      通过浏览器即可访问,无需安装,用户就会比较愿意去用。

    WebApp的缺点

    1. 性能低,用户体验差:

      由于是直接通过浏览器访问,所以无法使用原生的API,操作体验不好。

    2. 依赖于网络,页面访问速度慢,耗费流量:

      Web App每次访问都需要去服务端加载资源访问,所以必须依赖于网络,而且网速慢时访问速度很不理想,特别是在移动端,如果网站优化不好会无故消耗大量流量。

    3. 功能受限,大量功能无法实现:

      只能使用Html5的一些特殊api,无法调用原生API,所以很多功能存在无法实现情况。

    4. 临时性入口,用户留存率低

      这既是它的优点,也是缺点,优点是无需安装,缺点是用完后有时候很难再找到,或者说很难专门为某个web app留存一个入口,导致用户很难再次使用。通过挂在微信公众号的链接中,可以定下来入口。

    应用技术

    1. VueJS
    2. ReactJS
    3. AngularJS

    HybridApp(混合App)

    混合模式移动应用,介于Web App、Native App这两者之间的App开发技术,兼具“Native App良好交互体验的优势”和“Web App跨平台开发的优势” ,原生客户端的壳WebView,其实里面是HTML5的网页

    在这里插入图片描述

    WebView是什么

    WebView 是原生浏览器的内置浏览器,里面是h5的网页,所有的业务都是h5网页,外面是一个安卓或者 ios的 只提供 API,提供SDK(调用原生能力的包) / 拍照/录像/录音/ ,不做具体业务。 h5网页 通过 js 调用 外面壳提供的原生能力。

    • 把网页打包成移动 App,使Web 程序可以访问手机原生能力。

    HybridApp的优点

    1. 开发成本较低,可以跨平台,调试方便

      Hybrid模式下,由原生提供统一的API给JS调用,实际的主要逻辑由Html和JS来完成,而由于最终是放在webview中显示的,所以只需要写一套代码即可,达到跨平台效果,另外也可以直接在浏览器中调试,很为方便

      最重要的是只需要一个前端人员稍微学习下JS api的调用即可,无需两个独立的原生人员

      一般Hybrid中的跨平台最少可以跨三个平台:Android App,iOS App,普通webkit浏览器

    2. 维护成本低,功能可复用

      同上,如果代码合理,只需要一名前端就可以维护多个app,而且很多功能还可以互相复用

    3. 更新较为自由

      混合开发 实际上 就是 安卓的壳 /ios壳 + html/js/css

      更新的话 只需要 下载最新的 html+js+css(本地模式)

      安卓的壳 /ios壳 + webview(线上地址)(线上模式) => 更新只需要部署到服务器即可 (性能和效率是比较低)

      虽然没有web app更新那么快速,但是Hybrid中也可以通过原生提供api,进行资源主动下载,达到只更新资源文件,不更新apk(ipa)的效果 (进入之后热更新)

    4. 针对新手友好,学习成本较低

      这种开发模式下,只需要前端人员关注一些原生提供的API,具体的实现无需关心,没有新的学习内容,只需要前端人员即可开发。

    5. 功能更加完善,性能和体验要比起web app好太多

      因为可以调用原生api,所以很多功能只要原生提供出就可以实现,另外性能也比较接近原生了

    6. 部分性能要求的页面可用原生实现

      一般来说 壳+html+js+css , 壳+ 部分原生 + html/js+css

      这应该是Hybrid模式的最多一个好处了,因为这种模式是原生混合web,所以我们完全可以将交互强,性能要求高的页面用原生写,然后一些其它页面用JS写,嵌入webview中,达到最佳体验

    HybridApp的缺点

    1. 相比原生,性能仍然有较大损耗

      这种模式受限于webview的性能桎梏,相比原生而言有不少损耗,体验无法和原生相比

    2. 不适用于交互性较强的app

      这种模式的主要应用是:一些新闻阅读类,信息展示类的app;但是不适用于一些交互较强或者性能要求较高的app(比如动画较多就不适合)

    其他类型App

    小程序

    • 微信小程序
      • mpvue:使用vue.js 开发小程序的前端框架
    • 百度小程序
    • 头条小程序
    • 支付宝小程序

    微网页

    • 微信公众号
    • 百度直达号

    快应用

    • 国内各大手机厂商联合制定推出的一种新型应用。无需安装,秒开,体验媲美原生,还提供了像原生应用一样的入口。

    • iphone不参与。

    • 使用web技术进行开发,而且提供了在web中访问手机硬件等底层交互的api。

    • 属于混合app的一种。

    • 支付宝小程序

    微网页

    • 微信公众号
    • 百度直达号

    快应用

    • 国内各大手机厂商联合制定推出的一种新型应用。无需安装,秒开,体验媲美原生,还提供了像原生应用一样的入口。
    • iphone不参与。
    • 使用web技术进行开发,而且提供了在web中访问手机硬件等底层交互的api。
    • 属于混合app的一种。
    • 开发工具:hap-toolkit。
    展开全文
  • 应用程序app分类名称配图素材PPT学习教案.pptx
  • 实现所有主流APP分类选择效果,纯swift,简单易用,灵活扩展..zip,A powerful and easy to use segmented view (segmentedcontrol, pagingview, pagerview, pagecontrol, categoryview) (腾讯新闻、今日头条、QQ音乐...
  • 教育移动手机应用APP分类大全.ppt
  • APP分类APP分类图片手机端主流APP分类
  • 仿京东app分类特效

    2014-03-25 23:29:23
    仿京东app分类特效 http://blog.csdn.net/xiaolinxx/article/details/22108985
  • 高仿京东app分类效果

    2016-05-17 10:33:25
    使用ScrollView+Fragment实现京东商城app分类效果
  • 相信各位对于APP设计,已经很熟练啦。如何在熟练的基础上提高我们界面的优美度,或者是进行APP界面的迭代设计。 重构APP设计布局是我们必须要经历的一个过程。 在之前,学习UI设计的时候,经常要接触到页面...

    相信各位对于APP设计,已经很熟练啦。如何在熟练的基础上提高我们界面的优美度,或者是进行APP界面的迭代设计。

    重构APP设计布局是我们必须要经历的一个过程。

    在之前,学习UI设计的时候,经常要接触到页面的布局,布局的方式会直接影响一个APP的视觉效果,好的布局方式,往往能带来舒服的视觉效果,更能得到用户的接受与好评。

    今天,25学堂跟大家来看下四种常见的APP分类界面布局

     

     

    第一种APP分类界面布局:宫格式分类界面布局

    宫格式布局也算是移动APP上最常见的布局方式,也是用户体验最佳的一种方式。不然锤子手机的界面就是宫格的布局。

    %e5%88%86%e7%b1%bb%e7%95%8c%e9%9d%a2%e5%ae%ab%e6%a0%bc%e5%bc%8f%e5%b8%83%e5%b1%80

    APP宫格设计 贴图

    上面这个分类界面的设计的图标非常漂亮、精致。有点MBE风格的味道。

     

     

    第二种APP分类界面布局:左右对称平等分的分类布局

    这类分类界面设计的公式:左边是分类名称 + 分类说明 +分类图片

    这类布局方式在电商、旅游、新闻等APP分类界面当中最常见。也适合分类特别多的APP布局。

    %e7%94%b5%e5%95%86%e5%88%86%e7%b1%bb%e7%95%8c%e9%9d%a2%e5%8f%82%e8%80%83%e5%ad%a6%e4%b9%a0

    这类对设计的要求比较高,需要设计师把握好设计的尺度。比如左边和大小和右边实物图的比例要是黄金比例才行。

     

     

    第三种APP分类界面布局:列表式分类界面布局设计

    这类最简单,也是最经典的分类界面设计,但是可以融合一些宫格式布局来搭配。比如下面的分类界面设计非常不错。

    %e5%88%97%e8%a1%a8%e5%bc%8f%e7%9a%84%e5%88%86%e7%b1%bb%e7%95%8c%e9%9d%a2%e8%ae%be%e8%ae%a1

     

    列表式布局的优点:这种方式的在APP用户体验改进了很多,尤其在连续切换时其操作方式的连续性比较强,主体页面的过渡也更加平滑,会产生更加流畅的体验。

    列表式布局的缺点:不适合类别分类目录过多的界面。而且这样连续性的滑动容易导致定位不准。或者容易触发别的栏目的类目。

     

     

    第四种APP分类界面布局:分模块布局设计

    这类的布局设计,适合分类种类比较多,而且扩展性强。同时也可以给设计师提供更广的设计空间。

    比如下图这样的设计:

    %e5%88%86%e6%a8%a1%e5%9d%97%e5%8c%96%e7%9a%84%e5%88%86%e7%b1%bb%e7%95%8c%e9%9d%a2%e5%b8%83%e5%b1%80

    分模块的分类界面设计布局的优点就是非常清晰明了。

    缺点:操作点击区域多了,对于有选择困难症的人来说,就会出现不舒服的现象。所以,对于设计师来说,就要对留白技巧掌握非常准确。通过色块和留白消除这样的现象。

     

    转载于:https://www.cnblogs.com/lsongyang/p/9486058.html

    展开全文
  • 2013年最全的手机应用APP分类大全, 分类别整理的
  • 商城类APP的商品分类页面实现,使用RecyclerView结合GridLayout减少嵌套
  • 仿京东App分类页面的实现

    万次阅读 热门讨论 2016-03-16 11:16:29
    今天群里有人问了关于仿京东App分类页面的实现,而我之前正好查过这方面的资料,手上正好有一个demo,正好分享给大家看看,个人觉得效果棒棒哒!首先来看效果图吧是不是很6呢,来分析这个demo的主体构成吧,顶部为...

    今天群里有人问了关于仿京东App分类页面的实现,而我之前正好查过这方面的资料,手上正好有一个demo,正好分享给大家看看,个人觉得效果棒棒哒!

    首先来看效果图吧

    这里写图片描述

    是不是很6呢,来分析这个demo的主体构成吧,顶部为搜索栏,左侧是scroview,不要担心优化问题,因为scroview里面的TextView是动态生成的,完全不用担心优化问题,右侧是viewPager,Scroview可以控制viewPager的滑动,反之ViewPager也可以控制scroview的滑动。

    闲话少说,直接上代码:

    activity_main

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="52dp"
            android:background="@color/activity_graybg"
            android:baselineAligned="false"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="horizontal"
            android:paddingBottom="8dp"
            android:paddingLeft="10dp"
            android:paddingRight="15dp"
            android:paddingTop="8dp" >
    
            <RelativeLayout
                android:id="@+id/search_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                >
    
                <EditText
                    android:id="@+id/search_edit"
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="3dp"
                    android:layout_marginRight="5dp"
                    android:layout_toLeftOf="@+id/search_line"
                    android:background="@drawable/transparent_edittext_bg"
                    android:hint="@string/search_hint"
                    android:paddingLeft="@dimen/space_8"
                    android:maxLength="50"
                    android:singleLine="true"
                    android:textColor="@color/black_text_color"
                    android:textColorHint="@color/gray_text_color"
                    android:textSize="@dimen/text_mid_size" />
    
                <View
                    android:id="@+id/search_line"
                    android:layout_width="@dimen/yipx"
                    android:layout_height="match_parent"
                    android:layout_toLeftOf="@+id/search_btn"
                    android:background="@color/activity_graybg" />
    
                <ImageView
                    android:id="@+id/search_btn"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:contentDescription="@null"
                    android:src="@drawable/search_btn_bg" />
            </RelativeLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:gravity="center_horizontal" >
    
                <ImageView
                    android:id="@+id/type_icon"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:contentDescription="@null"
                    android:padding="4dp"
                    android:layout_margin="@dimen/space_4"
                    android:src="@drawable/barcode_normal"
                    android:visibility="visible" />
            </LinearLayout>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
    
            <ScrollView
                android:id="@+id/tools_scrlllview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:fadingEdge="none"
                android:scrollbars="none" >
    
                <LinearLayout
                    android:id="@+id/tools"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center_horizontal"
                    android:orientation="vertical" />
            </ScrollView>
    
            <android.support.v4.view.ViewPager
                android:id="@+id/goods_pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" />
        </LinearLayout>
    
    </LinearLayout>

    上面是主页面布局,下面放上主页面代码

    package up72.com.testtype;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.ScrollView;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        private String toolsList[];
        private TextView toolsTextViews[];
        private View views[];
        private LayoutInflater inflater;
        private ScrollView scrollView;
        private int scrllViewWidth = 0, scrollViewMiddle = 0;
        private ViewPager shop_pager;
        private int currentItem = 0;
        private ShopAdapter shopAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            scrollView = (ScrollView) findViewById(R.id.tools_scrlllview);
            shopAdapter = new ShopAdapter(getSupportFragmentManager());
            inflater = LayoutInflater.from(this);
            showToolsView();
            initPager();
        }
    
        /**
         * 动态生成显示items中的textview
         */
        private void showToolsView() {
            toolsList = new String[]{"常用分类", "潮流女装", "品牌男装", "内衣配饰", "家用电器", "手机数码", "电脑办公", "个护化妆", "母婴频道", "食物生鲜", "酒水饮料", "家居家纺", "整车车品", "鞋靴箱包", "运动户外", "图书", "玩具乐器", "钟表", "居家生活", "珠宝饰品", "音像制品", "家具建材", "计生情趣", "营养保健", "奢侈礼品", "生活服务", "旅游出行"};
            LinearLayout toolsLayout = (LinearLayout) findViewById(R.id.tools);
            toolsTextViews = new TextView[toolsList.length];
            views = new View[toolsList.length];
    
            for (int i = 0; i < toolsList.length; i++) {
                View view = inflater.inflate(R.layout.item_b_top_nav_layout, null);
                view.setId(i);
                view.setOnClickListener(toolsItemListener);
                TextView textView = (TextView) view.findViewById(R.id.text);
                textView.setText(toolsList[i]);
                toolsLayout.addView(view);
                toolsTextViews[i] = textView;
                views[i] = view;
            }
            changeTextColor(0);
        }
    
        private View.OnClickListener toolsItemListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                shop_pager.setCurrentItem(v.getId());
            }
        };
    
    
        /**
         * initPager<br/>
         * 初始化ViewPager控件相关内容
         */
        private void initPager() {
            shop_pager = (ViewPager) findViewById(R.id.goods_pager);
            shop_pager.setAdapter(shopAdapter);
            shop_pager.setOnPageChangeListener(onPageChangeListener);
        }
    
        /**
         * OnPageChangeListener<br/>
         * 监听ViewPager选项卡变化事的事件
         */
    
        private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int arg0) {
                if (shop_pager.getCurrentItem() != arg0) shop_pager.setCurrentItem(arg0);
                if (currentItem != arg0) {
                    changeTextColor(arg0);
                    changeTextLocation(arg0);
                }
                currentItem = arg0;
            }
    
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
    
            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        };
    
    
        /**
         * ViewPager 加载选项卡
         *
         * @author Administrator
         */
        private class ShopAdapter extends FragmentPagerAdapter {
            public ShopAdapter(FragmentManager fm) {
                super(fm);
            }
    
            @Override
            public Fragment getItem(int arg0) {
                Fragment fragment = new Fragment_pro_type();
                Bundle bundle = new Bundle();
                String str = toolsList[arg0];
                bundle.putString("typename", str);
                fragment.setArguments(bundle);
                return fragment;
            }
    
            @Override
            public int getCount() {
                return toolsList.length;
            }
        }
    
    
        /**
         * 改变textView的颜色
         *
         * @param id
         */
        private void changeTextColor(int id) {
            for (int i = 0; i < toolsTextViews.length; i++) {
                if (i != id) {
                    toolsTextViews[i].setBackgroundResource(android.R.color.transparent);
                    toolsTextViews[i].setTextColor(0xff000000);
                }
            }
            toolsTextViews[id].setBackgroundResource(android.R.color.white);
            toolsTextViews[id].setTextColor(0xffff5d5e);
        }
    
    
        /**
         * 改变栏目位置
         *
         * @param clickPosition
         */
        private void changeTextLocation(int clickPosition) {
    
            int x = (views[clickPosition].getTop() - getScrollViewMiddle() + (getViewheight(views[clickPosition]) / 2));
            scrollView.smoothScrollTo(0, x);
        }
    
        /**
         * 返回scrollview的中间位置
         *
         * @return
         */
        private int getScrollViewMiddle() {
            if (scrollViewMiddle == 0)
                scrollViewMiddle = getScrollViewheight() / 2;
            return scrollViewMiddle;
        }
    
        /**
         * 返回ScrollView的宽度
         *
         * @return
         */
        private int getScrollViewheight() {
            if (scrllViewWidth == 0)
                scrllViewWidth = scrollView.getBottom() - scrollView.getTop();
            return scrllViewWidth;
        }
    
        /**
         * 返回view的宽度
         *
         * @param view
         * @return
         */
        private int getViewheight(View view) {
            return view.getBottom() - view.getTop();
        }
    }
    

    在贴上fragment代码

    package up72.com.testtype;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    
    import java.util.ArrayList;
    
    
    public class Fragment_pro_type extends Fragment {
        private ArrayList<Type> list;
        private ImageView hint_img;
        private GridView listView;
        private Pro_type_adapter adapter;
        private Type type;
        private ProgressBar progressBar;
        private String typename;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_pro_type, null);
            progressBar=(ProgressBar) view.findViewById(R.id.progressBar);
            hint_img=(ImageView) view.findViewById(R.id.hint_img);
            listView = (GridView) view.findViewById(R.id.listView);
            typename=getArguments().getString("typename");
            ((TextView)view.findViewById(R.id.toptype)).setText(typename);
            GetTypeList();
            adapter=new Pro_type_adapter(getActivity(), list);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    
    
                }
            });
    
            return view;
        }
    
    
        private void GetTypeList() {
            list=new ArrayList<Type>();
            for(int i=1;i<35;i++){
                type=new Type(i, typename+i, "");
                list.add(type);
            }   
            progressBar.setVisibility(View.GONE);
        }
    }
    

    fragment布局代码

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/activity_bg" >
    
    
        <TextView 
            android:id="@+id/toptype"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:textSize="12sp"
            android:layout_margin="15dp"
            />
    
         <GridView
            android:id="@+id/listView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:numColumns="3"
            android:horizontalSpacing="10dp"
            android:verticalSpacing="10dp"
            android:layout_below="@id/toptype"
            android:scrollbars="none"
             />
    
        <ImageView
            android:id="@+id/hint_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="60dp"
            android:contentDescription="@null"
            android:scaleType="centerInside"
            android:visibility="gone" />
    
        <ProgressBar
            android:id="@+id/progressBar"
            style="@android:style/Widget.ProgressBar.Small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:visibility="visible" />
    
    </RelativeLayout>

    最后自然是fragment适配器代码啦

    package up72.com.testtype;
    
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    
    public class Pro_type_adapter extends BaseAdapter {
        private LayoutInflater mInflater;
        private ArrayList<Type> list;
        private Context context;
        private Type type;
    
        public Pro_type_adapter(Context context, ArrayList<Type> list) {
            mInflater = LayoutInflater.from(context);
            this.list = list;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            if (list != null && list.size() > 0)
                return list.size();
            else
                return 0;
        }
    
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            final MyView view;
            if (convertView == null) {
                view = new MyView();
                convertView = mInflater.inflate(R.layout.list_pro_type_item, null);
                view.icon = (ImageView) convertView.findViewById(R.id.typeicon);
                view.name = (TextView) convertView.findViewById(R.id.typename);
                convertView.setTag(view);
            } else {
                view = (MyView) convertView.getTag();
            }
            if (list != null && list.size() > 0) {
                type = list.get(position);
                view.name.setText(type.getTypename());
                if (type.getTypename().contains("电脑办公")) {
                    view.icon.setBackgroundResource(R.drawable.diannao);
                } else if (type.getTypename().contains("个护化妆")) {
                    view.icon.setBackgroundResource(R.drawable.huazhuang);
                } else if (type.getTypename().contains("鞋靴箱包")) {
                    view.icon.setBackgroundResource(R.drawable.nvxie);
                } else if (type.getTypename().contains("潮流女装")) {
                    view.icon.setBackgroundResource(R.drawable.nvzhuang);
                } else if (type.getTypename().contains("图书")) {
                    view.icon.setBackgroundResource(R.drawable.shuji);
                } else if (type.getTypename().contains("玩具乐器")) {
                    view.icon.setBackgroundResource(R.drawable.wanju);
                } else if (type.getTypename().contains("音像制品")) {
                    view.icon.setBackgroundResource(R.drawable.yingshi);
                } else if (type.getTypename().contains("常用分类")) {
                    view.icon.setBackgroundResource(R.drawable.yiyong);
                } else if (type.getTypename().contains("品牌男装")) {
                    view.icon.setBackgroundResource(R.drawable.nanzhuang);
                } else if (type.getTypename().contains("内衣配饰")) {
                    view.icon.setBackgroundResource(R.drawable.neiyi);
                } else if (type.getTypename().contains("家用电器")) {
                    view.icon.setBackgroundResource(R.drawable.dianqi);
                } else if (type.getTypename().contains("手机数码")) {
                    view.icon.setBackgroundResource(R.drawable.shouji);
                } else {
                    view.icon.setBackgroundResource(R.drawable.nvzhuang);
                }
            }
    
            return convertView;
        }
    
    
        private class MyView {
            private ImageView icon;
            private TextView name;
        }
    
    
    }
    

    适配器布局代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
         >
    
        <TextView 
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/black"
            android:textSize="@dimen/text_mid_size" 
            android:gravity="center"
            />
    
    
        <ImageView
            android:id="@+id/line"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@color/gray_line_color"
            android:contentDescription="@null"
            android:visibility="visible" />
    
    </LinearLayout>
    

    就这么多了,大家可以直接那去用,效果还是杠杠的

    展开全文
  • 酒店APP分类与未来发展趋向.pdf
  • 手机APP分类

    千次阅读 2018-11-20 16:17:08
    目前主流应用程序大体分为三类:Web App、Hybrid App、Native App 一.什么是Web App、Hybrid App、Native App   Web App Web App 指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存...
  • 随着互联网信息时代的到来,App应用和移动应用占领了市场的绝大部分份额,截止2021年,从市场应用软件来分析:移动应用占市场的58%,社交应用、教育应用、生活服务等占比42%,在这些应用中最突出的是游戏类的应用,...
  • selinux android app 分类处理

    千次阅读 2018-01-17 14:53:26
    1.SEAndroid app分类 SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型): 1)untrusted_app 第三方app,没有android平台签名,没有system权限 2)platform_app 有android平台...
  • 基于语音识别和GPS定位的智能垃圾分类APP.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,020
精华内容 70,008
关键字:

app分类

友情链接: octree.rar