您现在的位置是:主页 > news > 视频网站是如何做的/推广系统

视频网站是如何做的/推广系统

admin2025/4/25 22:04:28news

简介视频网站是如何做的,推广系统,网站建设方案书生鲜,网站seo重庆2019独角兽企业重金招聘Python工程师标准>>> 1.ListView滑动方向判断 代码很简单,给mListView监听onScrollListener事件,然后在onScroll进行判断 //listView中第一项的索引private int mListViewFirstItem 0;//listView中第一项的在屏幕中的…

视频网站是如何做的,推广系统,网站建设方案书生鲜,网站seo重庆2019独角兽企业重金招聘Python工程师标准>>> 1.ListView滑动方向判断 代码很简单,给mListView监听onScrollListener事件,然后在onScroll进行判断 //listView中第一项的索引private int mListViewFirstItem 0;//listView中第一项的在屏幕中的…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.ListView滑动方向判断

代码很简单,给mListView监听onScrollListener事件,然后在onScroll进行判断

//listView中第一项的索引private int mListViewFirstItem = 0;//listView中第一项的在屏幕中的位置private int mScreenY = 0;//是否向上滚动private boolean mIsScrollToUp = false;@Overridepublic void onScroll(AbsListView absListView, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if(mListView.getChildCount()>0){boolean isScrollToUp = false;View childAt = mListView.getChildAt(firstVisibleItem);int[] location = new int[2];childAt.getLocationOnScreen(location);Log.d("onScroll", "firstVisibleItem= "+firstVisibleItem+" , y="+location[1]);if(firstVisibleItem!=mListViewFirstItem){if(firstVisibleItem>mListViewFirstItem){Log.e("--->", "向上滑动");isScrollToUp = true;}else{Log.e("--->", "向下滑动");isScrollToUp = false;}mListViewFirstItem = firstVisibleItem;mScreenY = location[1];}else{if(mScreenY>location[1]){Log.i("--->", "->向上滑动");isScrollToUp = true;}else if(mScreenY<location[1]){Log.i("--->", "->向下滑动");isScrollToUp = false;}mScreenY = location[1];}if(mIsScrollToUp!=isScrollToUp){onScrollDirectionChanged(mIsScrollToUp);}}}private void onScrollDirectionChanged(boolean isScrollToUp) {}

-------使用ListView构建垂直滚动的View-------------

import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.LayoutParams;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ListView;public class CardListActivity extends ActionBarActivity implements OnScrollListener {private ListView mListView = null;private Activity activity = null;private DisplayMetrics screenMetrics = null;private CardListAdapter mCardListAdapter = null;//listView中第一项的索引private int mListViewFirstItem = -1;//listView中第一项的在屏幕中的位置private int mScreenY = 0;private int screenHeight = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.simple_listview);activity  = this;mListView = (ListView) findViewById(R.id.app_listView);screenMetrics = getResources().getDisplayMetrics();screenHeight = screenMetrics.heightPixels-getStatusBarHeight();initDataAndView();}private void initDataAndView() {mCardListAdapter = new CardListAdapter();List<View> viewItems = mCardListAdapter.getViewItems();for (int i = 0; i <= 3; i++){int resId = activity.getResources().getIdentifier("slide_img_"+i, "drawable", getPackageName());viewItems.add(createImageView(resId));}mListView.setAdapter(mCardListAdapter);mCardListAdapter.notifyDataSetChanged();mListView.setOnScrollListener(this);}public class CardListAdapter extends BaseAdapter{private final List<View> viewItems = new ArrayList<View>();public List<View> getViewItems() {return viewItems;}@Overridepublic int getCount() {return viewItems.size();}@Overridepublic Object getItem(int position) {return viewItems.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {return viewItems.get(position);}}/*** 图片二次采样* @param resId* @return*/private Bitmap sampleSizeBitmap(int resId){BitmapFactory.Options opts = new BitmapFactory.Options();opts.inJustDecodeBounds = true;Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, opts);opts.inSampleSize = calculateInSampleSize(opts, screenMetrics.widthPixels, screenMetrics.heightPixels);opts.inJustDecodeBounds = false;if(bitmap!=null){bitmap.recycle();}return BitmapFactory.decodeResource(getResources(), resId, opts);}public  static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {final int height = options.outHeight;final int width = options.outWidth;int inSampleSize = 1;if (height > reqHeight || width > reqWidth) {final int heightRatio = Math.round((float) height / (float) reqHeight);final int widthRatio = Math.round((float) width / (float) reqWidth);inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;}return inSampleSize;}/*** 创建图片视图* @param resId* @return*/private ImageView createImageView(int resId) {ImageView iv = new ImageView(this);LayoutParams lp = (LayoutParams) iv.getLayoutParams();if(lp==null){lp = new LayoutParams(LayoutParams.MATCH_PARENT,screenHeight);}else{lp.width = LayoutParams.MATCH_PARENT;lp.height = screenHeight;}iv.setLayoutParams(lp);iv.setScaleType(ScaleType.CENTER);iv.setImageBitmap(sampleSizeBitmap(resId));return iv;}private int getStatusBarHeight() {int result = 0;int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");if (resourceId > 0) {result =  getResources().getDimensionPixelSize(resourceId);}return result;}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(mListViewFirstItem==-1){return;}if (SCROLL_STATE_IDLE==scrollState || SCROLL_STATE_FLING==scrollState){if(Math.abs(mScreenY)-(screenHeight*3)/5>0){mListView.smoothScrollToPosition(mListViewFirstItem+1);}else{mListView.smoothScrollToPosition(mListViewFirstItem);}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if(mListView.getAdapter()==null || mListView.getChildCount()==0){return;}View visibleFirstChild = (View) mListView.getAdapter().getItem(firstVisibleItem);if(visibleFirstChild==null){return;}int[] location = new int[2];visibleFirstChild.getLocationOnScreen(location);Log.d("onScroll", "first="+firstVisibleItem+" , screenY="+location[1]+",deltY="+(Math.abs(mScreenY)-(screenHeight*3)/5));if(firstVisibleItem!=mListViewFirstItem){if(firstVisibleItem>mListViewFirstItem){Log.i("=======>", "向上滑动");}else{Log.e("--->", "向下滑动");}}else{if(mScreenY>location[1]){Log.i("=======>", "->向上滑动");}else if(mScreenY<location[1]){Log.e("--->", "->向下滑动");}}mListViewFirstItem = firstVisibleItem;mScreenY = location[1];}
}

2.ListView实现弹性拉伸

public class BounceListView extends ListView {private float maxBounceAxisYScroll = 200;public BounceListView(Context context) {super(context);}public BounceListView(Context context, AttributeSet attrs) {super(context, attrs);}public BounceListView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, (int)maxBounceAxisYScroll, isTouchEvent);}
}

3.实现多View类型的BaseAdapter

public class ViewTypeListAdapter<T extends ChatBean> extends BaseAdapter {private final List<T> dataSource = new ArrayList<T>();private int viewTypes;private LayoutInflater inflater;public ViewTypeListAdapter(Context context,List<T> dataSource,int viewTypes){this.viewTypes = viewTypes;this.dataSource.addAll(dataSource);inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return dataSource.size();}@Overridepublic Object getItem(int position) {return dataSource.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ChatViewHolder viewHolder = null;if(convertView==null || convertView.getTag()==null){viewHolder = new ChatViewHolder();if(getItemViewType(position)==0){convertView = inflater.inflate(R.layout.chat_friend_layout,null);viewHolder.mTextView  = (TextView)convertView.findViewById(R.id.friend_textView);}else if(getItemViewType(position)==1){convertView = inflater.inflate(R.layout.chat_mine_layout,null);viewHolder.mTextView  = (TextView)convertView.findViewById(R.id.mine_textView);}else{convertView = inflater.inflate(R.layout.chat_system_layout,null);viewHolder.mTextView  = (TextView)convertView.findViewById(R.id.system_textView);}}else{viewHolder = (ChatViewHolder) convertView.getTag();if(viewHolder.viewType==getItemViewType(position)){Log.i("ViewType","=================>TRUE");}else{Log.e("ViewType", "FALSE");}}viewHolder.mTextView.setText(dataSource.get(position).getName());viewHolder.viewType = dataSource.get(position).getType();convertView.setTag(viewHolder);return convertView;}//获得当前类型@Overridepublic int getItemViewType(int position) {return dataSource.get(position).getType();}//获得类型数量@Overridepublic int getViewTypeCount() {return viewTypes;}
}//-----------注意,同样可以对应多个ViewHolder,这里只写了一个--------------//
class ChatViewHolder{ public int viewType;public TextView mTextView;
}

在这里需要特别注意

 @Overridepublic int getItemViewType(int position) {return dataSource.get(position).getType();}

注意,返回值必须是从0开始的连续数字,否则可能出现数组越界异常。

 

转载于:https://my.oschina.net/ososchina/blog/395627