Android高级控件之RecycleView,Gallery,ViewPage

本文介绍了Android中的高级控件使用,包括RecycleView的导入与布局方式(如LinearLayoutManager, GridLayoutManager)及分割线设置;Gallery组件的简单应用,虽然已过时;以及ViewPager的引导页实现和主界面框架,涉及到PagerAdapter、滑动监听和导航点的设置。同时提到了一些开源框架和属性设置。" 95360970,8669965,域用户网络驱动器映射策略,"['Windows域', '网络配置', '用户管理', '系统安全']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.RecycleView

   在使用RecycleView之前,需要导入一个资源,--添加RecyclerView引用:compile 'com.android.support:recyclerview-v7:24.0.0-alpha1'(build.gradle),在你搭建的项目中找到build.gradle.

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile project(':pulltorefresh')
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
    testCompile 'junit:junit:4.12'
}
你导入的资源需要与你上面的资源相结合,26与26要相对应,如果你不对应的话就会报错。

通过使用recycleview可控制界面的是网格还是线性布局,一步到位,就不需要像以前那样要写两个界面了。

     <1>布局方式:LayoutManager
横向布局 
垂直布局
网格布局Grid
<2>分割线:ItemDecoration
Github托管源码:https://github.com/yqritc/RecyclerView-FlexibleDivider


下面为布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.g160828_android09_widget.MainActivity">



<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rv_main_recycleview"
    >

</android.support.v7.widget.RecyclerView>


</LinearLayout>

布局文件相对应的java文件:

package com.example.g160828_android09_widget;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private String titles[]={"愤怒的老鸟","Tomcat","KFC","大黑牛","旺财","中国龙","北京烤鸭","蜡笔小新","7秒小金鱼","九尾狐","蜡笔小新","7秒小金鱼","九尾狐"};
    private int images[]={R.drawable.bird,R.drawable.cat,R.drawable.chicken,R.drawable.cow,R.drawable.dog,R.drawable.dragon,R.drawable.duck,R.drawable.elephant,R.drawable.fish,R.drawable.fox,R.drawable.elephant,R.drawable.fish,R.drawable.fox};
    private RecyclerView rv_main_recycleview;
    private List<String> list;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       rv_main_recycleview = (RecyclerView) findViewById(R.id.rv_main_recycleview);

        list = new ArrayList<>();
        for (int i = 0; i <10 ; i++) {
            list.add("aa"+i);
        }

        rv_main_recycleview.setAdapter(new MyAdapter());
        //排列方式
       // rv_main_recycleview.setLayoutManager(new LinearLayoutManager(this, LinearLayout.HORIZONTAL,false));
        rv_main_recycleview.setLayoutManager(new GridLayoutManager(this,2,GridLayoutManager.VERTICAL,false));

    }

    class MyAdapter extends RecyclerView.Adapter{


        //内部内
        class MyViewHolder extends RecyclerView.ViewHolder{
           private TextView textview;

            public MyViewHolder(View itemView) {
                super(itemView);
                textview=(TextView) itemView.findViewById(android.R.id.text1);
            }
        }




        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

          View view=getLayoutInflater().inflate(android.R.layout.simple_list_item_1,null);

            return new MyViewHolder(view);
        }


        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
                MyViewHolder MyHolder= (MyViewHolder) holder;
                MyHolder.textview.setText(list.get(position));
        }

       //返回集合的大小
        @Override
        public int getItemCount() {
            return list.size();
        }
    }

    }



2.Gallery(画廊)--已过时


package com.zking.administrator.g160828_android09_widgetplus;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;


public class GalleryActivity extends AppCompatActivity {


    private Gallery g_gallery_image;
    private int images[]={R.drawable.image1,R.drawable.image4,R.drawable.image3};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gallery);
        g_gallery_image = (Gallery) findViewById(R.id.g_gallery_image);
        g_gallery_image.setAdapter(new MyAdapter());
    }


    class MyAdapter extends BaseAdapter{


        @Override
        public int getCount() {
            return images.length;
        }


        @Override
        public Object getItem(int position) {
            return images[position];
        }


        @Override
        public long getItemId(int position) {
            return position;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView=new ImageView(GalleryActivity.this);
            imageView.setImageResource(images[position]);
            return imageView;
        }
    }

}



3.ViewPage

我们最长用的一个控件,它可以实现布局跳布局、页面跳页面,不过我们比较常用的还是页面跳页面,微信中的滑动就是通过这个方法让实现的。所以我们需要好好掌握这一个知识点。

  <1>引导页
适配器   PagerAdapter
滑动监听 addOnPageChangeListener
导航点   github开源框架:ViewPagerIndicator
属性:
setRadius:设置半径
setPageColor:点的背景颜色
setBackgroundColor:控件的背景颜色
setFillColor:设置点的背景颜色
setStrokeColor:设置点背景的边框颜色
进入主界面
<2>主界面框架 


代码如下:

package com.example.g160828_android09_widget;

import android.app.LocalActivityManager;
import android.content.Intent;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

public class ViewpageActivity extends AppCompatActivity {

    private ViewPager vp_main_viewpage;
    private int images[]={R.drawable.yd2,R.drawable.yd3,R.drawable.yd4,};
    private List<View> listview= new ArrayList<>();
    private LocalActivityManager localactivitymanager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpage);

        vp_main_viewpage = (ViewPager) findViewById(R.id.vp_main_viewpage);

//        for (int i = 0; i < images.length; i++) {
//            ImageView imageview= new ImageView(this);
//            imageview.setImageResource(images[i]);
//            listview.add(imageview);
//        }
//

//          //布局跳布局

//        View vs1=getLayoutInflater().inflate(R.layout.activity_ver,null);
//        listview.add(vs1);
//        View vs2=getLayoutInflater().inflate(R.layout.activity_gr,null);
//        listview.add(vs2);



//        //界面跳界面
        localactivitymanager = new LocalActivityManager(this,true);
        localactivitymanager.dispatchCreate(savedInstanceState);

        Intent intent=new Intent(getApplicationContext(),VerActivity.class);
        listview.add(localactivitymanager.startActivity("ViewpageActivity",intent).getDecorView());

        Intent intend1=new Intent(getApplicationContext(),MainActivity.class);
        listview.add(localactivitymanager.startActivity("MainActivity",intend1).getDecorView());

        vp_main_viewpage.setAdapter(new MyAdapter());

    }

    class MyAdapter extends PagerAdapter{

        @Override
        public int getCount() {
            return listview.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
          View v=listview.get(position);
            container.addView(v);
            return v;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
           // super.destroyItem(container, position, object);
            View v=listview.get(position);
            container.removeView(v);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值