自己的listview的HeadView左右切换图片

package com.example.ui;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ViewFlipper;

public class MainActivity extends Activity implements OnGestureListener {

	private ViewFlipper flipper;  
    private int image_id[] = { R.drawable.a, R.drawable.b, R.drawable.c };  
    private ListView lv_main;  
    private LayoutInflater layoutInflater;  
    private LinearLayout ll_point;  
    private FrameLayout frameLayout;  
    private final String msg[] = { "one", "two", "three", "four", "five",  
            "six", "seven" };  
    private int frameheight;// 图片的高度  
    private int window_width;// 屏幕宽度  
    private ArrayList<ImageView> imageViews;// ponit 集合  
    private ArrayList<View> views;// flipper的孩子  
    private Timer timer;
	private GestureDetector detector;  

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		// 获取屏幕的宽度
		window_width = (int) getResources().getDimension(R.dimen.window_width);  
		detector = new GestureDetector(this); 
		initView(); 
		
		timer = new Timer(true);
		timer.schedule(new TimerTask(){

			@Override
			public void run() {
				//更新主线程
				runOnUiThread(new Runnable() {
					
					@Override
					public void run() {
						int pageIndex = getPageIndex(flipper.getCurrentView());
						if(pageIndex==flipper.getChildCount() - 1){
							pageIndex = 0;
						}else{
							pageIndex++;
						}
						flipper.setInAnimation(AnimationUtils.loadAnimation(  
                                MainActivity.this, R.anim.push_right_in)); 
						flipper.setOutAnimation(AnimationUtils.loadAnimation(  
                                MainActivity.this, R.anim.push_left_out));  
                        flipper.showNext();  
                        draw_Point(pageIndex);
					}
				});
				
			}
			
		}, 5000,5000);
		
	}
	
	//更新选中点 
	private void draw_Point(int index) {
		for (int i = 0; i < imageViews.size(); i++) {  
            imageViews.get(i).setImageResource(R.drawable.indicator);  
        }  
		imageViews.get(index).setImageResource(R.drawable.indicator_focused);
	}
	
	
	public void initView(){
		lv_main = (ListView) findViewById(R.id.listView1);
		lv_main.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				
				if(position!=0){
					Toast.makeText(MainActivity.this, msg[position - 1], 1).show();
				}else{
					int index = getPageIndex(flipper.getCurrentView()); 
					Toast.makeText(MainActivity.this, "图" + index, 1).show();  
				}
			}
		});	
		initHeadImage();
	}

	// 返回当前第几屏 
	protected int getPageIndex(View view) {
		for (int i = 0; i < views.size(); i++) {  
            if (view == views.get(i))  
                return i;  
        }  
        return 0;
	}

	/*** 
     * 初始化 HeadImage 
     */
	private void initHeadImage() {
		layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
        View headview = layoutInflater.inflate(R.layout.head_image, null);
        flipper = (ViewFlipper) headview.findViewById(R.id.viewFlipper1);
        ll_point = (LinearLayout) headview.findViewById(R.id.ll_point);  
        frameLayout = (FrameLayout) headview.findViewById(R.id.fl_main);
        initChildView(flipper);  
        LayoutParams layoutParams = (LayoutParams) frameLayout.getLayoutParams();
        layoutParams.height = frameheight;  
        frameLayout.setLayoutParams(layoutParams);  
        draw_Point(0);// 默认首次进入  
        lv_main.addHeaderView(headview);// 要卸载setAdapter前面  
        lv_main.setAdapter(new ArrayAdapter<String>(this,  
                android.R.layout.simple_list_item_1, msg)); 
	}

	private void initChildView(ViewFlipper flipper) {
		views = new ArrayList<View>();  
        LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,  
                LayoutParams.FILL_PARENT);  
        for (int i = 0; i < image_id.length; i++) {  
            ImageView imageView = new ImageView(this);  
            imageView.setScaleType(ScaleType.FIT_XY);  
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(),  
                    image_id[i]);  
            Bitmap bitmap2 = getBitmap(bitmap, window_width);  
            frameheight = bitmap2.getHeight();// 获取要显示的高度  
            imageView.setImageResource(image_id[i]);  
            flipper.addView(imageView, layoutParams);  
            views.add(imageView);  
        }  
        initPoint();  
		
	}

	//对图片处理 
	private Bitmap getBitmap(Bitmap bitmap, int width) {
		int w = bitmap.getWidth();  
        int h = bitmap.getHeight();  
        Matrix matrix = new Matrix();  
        float scale = (float) width / w;  
        // 保证图片不变形.  
        matrix.postScale(scale, scale);  
        // w,h是原图的属性.  
        return Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true); 
	}

	private void initPoint() {
		imageViews = new ArrayList<ImageView>(); 
		ImageView imageView;  
        for (int i = 0; i < image_id.length; i++) {  
            imageView = new ImageView(this);  
            imageView.setBackgroundResource(R.drawable.indicator);  
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(  
                    new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,  
                            LayoutParams.WRAP_CONTENT));  
            layoutParams.leftMargin = 10;  
            layoutParams.rightMargin = 10;  
            ll_point.addView(imageView, layoutParams);  
            imageViews.add(imageView);  
        }  
	}

	/
	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

	/** 
     * 监听滑动 
     */
	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		int pageIndex = getPageIndex(flipper.getCurrentView());
		
		// 左划
		if (e1.getX() - e2.getX() > 120) {  
            this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,  
                    R.anim.push_right_in));  
            this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,  
                    R.anim.push_left_out));  
            this.flipper.showNext();  
            if (pageIndex == flipper.getChildCount() - 1)  
                draw_Point(0);  
            else  
                draw_Point(++pageIndex);  
            return true;  
            // 右划  
        } else if (e1.getX() - e2.getX() < -120) {  
            this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,  
                    R.anim.push_left_in));  
            this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,  
                    R.anim.push_right_out));  
            this.flipper.showPrevious();  
            if (pageIndex == 0)  
                draw_Point(flipper.getChildCount() - 1);  
            else  
                draw_Point(--pageIndex);  
            return true;  
        }  
        return true;  
		
	}
	
	


}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>


</LinearLayout>


<?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" >

    <FrameLayout
        android:id="@+id/fl_main"  
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ViewFlipper
            android:id="@+id/viewFlipper1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ViewFlipper>

        <LinearLayout
            android:id="@+id/ll_point"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="bottom|center_horizontal"  
            android:layout_marginBottom="10dp"
            android:src="@drawable/biz_plugin_weather_indicator_popup_bg"
            android:orientation="vertical" >
        </LinearLayout>
        
    </FrameLayout>

</LinearLayout>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值