android拖动gridview
1. android GridView如何实现类似桌面图标的拖拽效果
GridView是系统提供的比较固定的UI控件,如果你要实现桌面那样的效果还是自已写一个,或者重写gridView。
Android是开源的,你可以找到GridView和home程序的源代码学习
2. android GridView 如何设置为左右可滚动
上下空间大,还可以滚动,只要设置:mGridView
.setOnTouchListener(new
OnTouchListener()
{
@Override
public
boolean
onTouch(View
v,
MotionEvent
event)
{
Log.e("onTouch",
"MotionEvent.ACTION_MOVE");
return
MotionEvent.ACTION_MOVE
==
event.getAction()
?
true
:
false;
}
});这样,就不能上下滚动了
3. Android中GridView如何与广告位轮播实现一起滑动
1.首先自定义一个ViewFlow类。
2.然后定义一个CircleFlowIndicator类。
具体代码依然见源码;
3.接下来就在布局文件中开始使用了
<framelayout android:id="@+id/framelayout" android:layout_height="300dip" android:layout_width="fill_parent" android:orientation="vertical">
</framelayout>代码中有个app:activeType,app:radius 这样的东西,可能新手不是很明白到底是个shenmegui,解释一下这是自定义属性。
使用自定义属性首先要记得把这个属性相应的命名空间给加在布局文件的开头,否则无法编译。
xmlns:app=”http://schemas.android.com/apk/res-auto”
这些属性都对应在attrs.xml文件中可以找到。
4.然后就可以在Activity中调用了,具体的代码是:
/**
* @Description:显示广告条的主页
* @author http://blog.csdn.net/finddreams
*/
public class MainActivity extends Activity {
private ViewFlow mViewFlow;
private CircleFlowIndicator mFlowIndicator;
private ArrayList imageUrlList = new ArrayList();
ArrayList linkUrlArray= new ArrayList();
ArrayList titleList= new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
imageUrlList.add(https://gss0..com/9vo3dSag_xI4khGko9WTAnF6hhy/image/pic/item/.jpg);
imageUrlList.add(https://gss0..com/-fo3dSag_xI4khGko9WTAnF6hhy/image/pic/item/.jpg);
imageUrlList.add(https://gss0..com/-Po3dSag_xI4khGko9WTAnF6hhy/image/pic/item/.jpg);
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/44301359);
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/43486527);
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/43194799);
titleList.add(Android开发面试经——);
titleList.add(Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现);
titleList.add(Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框 );
initBanner(imageUrlList);
}
private void initView() {
mViewFlow = (ViewFlow) findViewById(R.id.viewflow);
mFlowIndicator = (CircleFlowIndicator) findViewById(R.id.viewflowindic);
}
private void initBanner(ArrayList imageUrlList) {
mViewFlow.setAdapter(new ImagePagerAdapter(this, imageUrlList,
linkUrlArray, titleList).setInfiniteLoop(true));
mViewFlow.setmSideBuffer(imageUrlList.size()); // 实际图片张数,
// ImageAdapter实际图片张数为3
mViewFlow.setFlowIndicator(mFlowIndicator);
mViewFlow.setTimeSpan(4500);
mViewFlow.setSelection(imageUrlList.size() * 1000); // 设置初始位置
mViewFlow.startAutoFlowTimer(); // 启动自动播放
}
}
5.有一个很关键的就是ImagePagerAdapter这个适配器,因为加载网络图片是在这个类里实现的,还有广告条的点击,进入一个Web界面的实现。在这里加载网络图片使用了一个很火的开源项目,UniversalImageLoader(异步加载网络图片) 。
ImagePagerAdapter.class 类:
/**
* @Description: 图片适配器
* @author http://blog.csdn.net/finddreams
*/
public class ImagePagerAdapter extends BaseAdapter {
private Context context;
private List imageIdList;
private List linkUrlArray;
private List urlTitlesList;
private int size;
private boolean isInfiniteLoop;
private ImageLoader imageLoader;
private DisplayImageOptions options;
public ImagePagerAdapter(Context context, List imageIdList,
List urllist, List urlTitlesList) {
this.context = context;
this.imageIdList = imageIdList;
if (imageIdList != null) {
this.size = imageIdList.size();
}
this.linkUrlArray = urllist;
this.urlTitlesList = urlTitlesList;
isInfiniteLoop = false;
// 初始化imageLoader 否则会报错
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_launcher) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.meinv) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.meinv) // 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true) // 设置下载的图片是否缓存在内存中
.cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中
.build();
}
@Override
public int getCount() {
// Infinite loop
return isInfiniteLoop ? Integer.MAX_VALUE : imageIdList.size();
}
/**
* get really position
*
* @param position
* @return
*/
private int getPosition(int position) {
return isInfiniteLoop ? position % size : position;
}
@Override
public View getView(final int position, View view, ViewGroup container) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = holder.imageView = new ImageView(context);
holder.imageView
.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
imageLoader.displayImage(
(String) this.imageIdList.get(getPosition(position)),
holder.imageView, options);
holder.imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String url = linkUrlArray.get(ImagePagerAdapter.this
.getPosition(position));
String title = urlTitlesList.get(ImagePagerAdapter.this
.getPosition(position));
/*
* if (TextUtils.isEmpty(url)) {
* holder.imageView.setEnabled(false); return; }
*/
Bundle bundle = new Bundle();
bundle.putString(url, url);
bundle.putString(title, title);
Intent intent = new Intent(context, BaseWebActivity.class);
intent.putExtras(bundle);
context.startActivity(intent);
Toast.makeText(context, 点击了第 + getPosition(position) ,
0).show();
}
});
return view;
}
private static class ViewHolder {
ImageView imageView;
}
/**
* @return the isInfiniteLoop
*/
public boolean isInfiniteLoop() {
return isInfiniteLoop;
}
/**
* @param isInfiniteLoop
* the isInfiniteLoop to set
*/
public ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) {
this.isInfiniteLoop = isInfiniteLoop;
return this;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
}
6.点击进入一个带进度条的WebView的Activity,加载成功就可以了。
4. android viewpager 怎么滑动gridview页面
viewpager 与 gridView可能会有touch冲突,可以在gridview中增加一个onTouch事件,滑动冲突,只需要在子控件的onTouch中增加
getParent().(true);
表示告诉父控件,不要处理这个touch事件,即可解决滑动冲突。
5. 如何实现android中横向滚动的gridView
法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
6. android Gridview如何控制滑动速度或滑动距离
写个程序就可以了,具体如下:
1,定义一个类继承GridView,如下:
public class SourcePanel extends GridView {
public SourcePanel(Context context) {
super(context);
}
public SourcePanel(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SourcePanel(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
注意:构造方法要将GridView中的三种构造全部写上,否则很可能出现解析xml文件异常的错误。
2,在该类中重写dispatchTouchEvent()方法,如下:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_MOVE) {
return true; //禁止GridView滑动
}
return super.dispatchTouchEvent(ev);
}
3,在布局文件(xml)中定义该控件时写全包名,如下(属性跟GridView控件属性一样,按需求自加):
<com.kz.steerwheel.view.SourcePanel
android:id="@+id/sourcePanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
7. android一个界面上有两个gridview如何滑动一个让另一个也移动滑动
设置父布局为LinearLayout,然后设置2个gridview的weight都为1.0,然后滑动互不影响。
GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的.
GirdView的一些属性:
android:numColumns="auto_fit" --------列数设置为自动
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距
8. 安卓开发 怎么设置Girdview的纵向滑动
最简单的是将gridview放到一个panel中,然后给panel加上 ScrollBars="Vertical" 属性,便可以实现,但是这样标题头会随着滚动。
从一个网名为小小鸟的人那里学到如何给gridview 添加纵向滚动条,标题头不滚动 。首先定义一个样式表:
<style>
.Freezing
{
position:relative ;
table-layout:fixed;
top:expression(this.offsetParent.scrollTop);
z-index: 10;
}
.Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
</style>
Freezing 应用在HeaderStyle中,把gridview放置在div中,且将该div设置样式 style="overflow-y: scroll;“
9. android GridView 点击 进入图片左右滑动 求个方法
全屏浏览可以用ImageView的setImageResource,全屏的属性在manifest的activity上设置,
左右滑动使用Gallery拖动效果,创建一个int数组存放图片的id,继承Adapyer重写getView方法,网上有代码的,我的代码都被加密了,公司电脑
10. 求教高手,android下如何让GridView能够水平滚动,行数固定是三行
gridview外面套一个horizontalscrollview