简介 目录 评价 推荐
  • 慕慕1489572 2020-02-09
    在recyclerview中使用
    1回答·735浏览
  • 默66 2018-08-02
    MainActivity中继承接口后出错

    这个问题在看前面的是不是哪儿有什么逻辑问题

    1回答·1592浏览
  • 默66 2018-08-02
    图片点击效果没了
    1回答·1212浏览
  • 默66 2018-08-01
    软件闪退怎么办?
    1回答·1359浏览
  • 未来年薪百万的安卓工程师 2018-07-16
    手动滚动第一页和最后一个的不完美解决方案
    0回答·1260浏览
  • qq_PrinceOrKing_0 2018-06-09
    写在自己的项目里出现以下错误,求指教

    说你的addView()方法引用了一个空对象,说明你的ImageBarnnerViewGroup是空

    2回答·1281浏览
  • 宝慕林1682237 2018-06-06
    解决不了的问题
    0回答·1244浏览
  • 慕盖茨7836160 2018-04-03
    我很好奇为什么

    是你看错了吧,没有拼错呀

    1回答·1218浏览
  • 慕盖茨7836160 2018-03-30
    viewgroup的ID设置代码

    xml的设置语言要仔细了,出错不好看

    1回答·1282浏览
  • qq_蒾婗旛兲噵_0 2018-03-07
    程序报错了

    判空一下,或者看下一节中有解决方案:设置一下监听

    1回答·1249浏览
  • 马东369 2018-01-18
    自己听你讲了,但是有的地方还是不理解

    安卓没那么简单的 学的越多 懂得越多。

    1回答·1112浏览
  • qq_大宇DTX_0 2017-12-14
    绘制过程
    1回答·1143浏览
  • qq_大宇DTX_0 2017-12-13
    求源码 代码有错误

    往下看完之后可能就会错误消除了,之后老师会讲解之前出现的BUG

    1回答·1199浏览
  • 你是夏夜的萤火 2017-12-12
    轮播图在fragment的布局文件中中不能显示
    0回答·1281浏览
  • 你是夏夜的萤火 2017-12-11
    自定义控件空指针
    0回答·947浏览
  • qq_lovenewsweet_0 2017-11-21
    为什么不拦截onTouchEvent也会调用
    0回答·968浏览
  • RinoLi 2017-11-07
    ImageBannerViewGroup怎么导入
    0回答·870浏览
  • qq_星空独奏_0 2017-10-26
    为什么我的轮播图不能占满屏幕
    android:layout_height="wrap_content"
    //因为你将高度设置为包裹内容,那么图片有多高轮播图就有多高,
    //你可以设置为match_parent,这样就可以占满整个屏幕了
    1回答·2487浏览
  • 慕粉3499826 2017-10-22
    最后一页了,原码呢?
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Color;
    import android.os.Build;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.util.AttributeSet;
    import android.view.Gravity;
    import android.view.ViewGroup;
    import android.widget.FrameLayout;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    
    import com.example.administrator.asapplication.ImageVariable;
    import com.example.administrator.asapplication.R;
    
    import java.util.List;
    
    public class ImageBarnnerFramLayout extends FrameLayout implements ImageBarnnerViewGroup.ImageBarnnerViewGroupLisnner, ImageBarnnerViewGroup.ImageBarnnerLister{
        private ImageBarnnerViewGroup imageBarnnerViewGroup;
        private LinearLayout linearLayout;
        private FramLayoutLisenner lisenner;
    
    
        public FramLayoutLisenner getLisenner() {
            return lisenner;
        }
    
        public void setLisenner(FramLayoutLisenner lisenner) {
            this.lisenner = lisenner;
        }
    
        public ImageBarnnerFramLayout(@NonNull Context context) {
            super(context);
            initImageBarnnerViewGroup();
            initDotLinearLayout();
        }
    
        public ImageBarnnerFramLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            initImageBarnnerViewGroup();
            initDotLinearLayout();
        }
    
        public ImageBarnnerFramLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            initImageBarnnerViewGroup();
            initDotLinearLayout();
        }
    
    
        public void addBitmap( List<Bitmap> list){
            for(int i = 0; i<list.size(); i++){
                Bitmap bitmap = list.get(i);
                addBitmapToImageBarnnerViewGroup(bitmap);
                addDotToLinearlayout();
            }
        }
    
        private void addBitmapToImageBarnnerViewGroup(Bitmap bitmap){
            ImageView iv = new ImageView(getContext());
            iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
            iv.setLayoutParams(new ViewGroup.LayoutParams(ImageVariable.WIDTH, ImageVariable.HEIGHT/4));
            iv.setImageBitmap(bitmap);
            imageBarnnerViewGroup.addView(iv);
        }
    
        private void  addDotToLinearlayout(){
            ImageView iv = new ImageView(getContext());
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            lp.setMargins(5, 5, 5 ,5);
            iv.setLayoutParams(lp);
            iv.setImageResource(R.drawable.dot_normal);
            linearLayout.addView(iv);
        }
    
        /**
         * 初始化我们自定义图片轮播图功能的核心类
         */
        private void initImageBarnnerViewGroup(){
            imageBarnnerViewGroup = new ImageBarnnerViewGroup(getContext());
            FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
            imageBarnnerViewGroup.setLayoutParams(lp);
            imageBarnnerViewGroup.setBarnnerViewGroupLisnner(this);//这里就是将Lisnner,传递给Framlayout
            imageBarnnerViewGroup.setLister(this);
            addView(imageBarnnerViewGroup);
        }
    
    
        /**
         * 初始化我们的底部圆点布局
         */
        private void initDotLinearLayout(){
            linearLayout = new LinearLayout(getContext());
            FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, 40);
            linearLayout.setLayoutParams(lp);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL);//方向:水平居中
            linearLayout.setGravity(Gravity.CENTER);
    
    
            linearLayout.setBackgroundColor(Color.RED);//轮播图圆点的背景颜色
            addView(linearLayout);
    
            FrameLayout.LayoutParams layoutParams = (LayoutParams) linearLayout.getLayoutParams();
            layoutParams.gravity = Gravity.BOTTOM;
            linearLayout.setLayoutParams(layoutParams);
    
            //版本3.0以后的用setAlpha(),3.0之前用的是setAlpha(),但是调用者不同
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
                linearLayout.setAlpha(0.5f);
            }else{
                linearLayout.getBackground().setAlpha(100);
            }
    
    
        }
    
        @Override
        public void selectImage(int index) {
            int count = linearLayout.getChildCount();
            for (int i = 0; i < count; i++) {
                ImageView iv = (ImageView) linearLayout.getChildAt(i);
                if( i == index){
                    iv.setImageResource(R.drawable.dot_select);
                }else {
                    iv.setImageResource(R.drawable.dot_normal);
                }
    
            }
        }
    
        @Override
        public void clickImageIndex(int pos){
            lisenner.clickImageIndex(pos);
        }
    
        public interface FramLayoutLisenner{
            void clickImageIndex(int pos);
        }
    }


    4回答·1525浏览
  • 圣见兮月 2017-10-18
    为什么我的图片滑不过去了

    抄错了 不是children 而是childWidth 尴尬

    1回答·1273浏览
  • 圣见兮月 2017-10-17
    这个第一点和第三点真的不一样吗
    0回答·1006浏览
  • 呜呜呜呜www 2017-10-12
    2.3.3版本中 没有handleMessa方法,有什么方法可以替换?

    应该是导入错了包 ,导入的包是这个import android.os.Handler;

    2回答·1175浏览
  • 叮叮咚咚响当当 2017-09-15
    为什么运行只出来一张图片?

    也许可能

    1回答·1171浏览
  • 慕沐2742265 2017-09-13
    为什么没有源码啊 啊啊啊
    0回答·911浏览
  • 慕田峪7532397 2017-08-25
    在真机运行老是oom,有啥好的优化方法吗?

    对于OOM,其实最重要的是注意不要Memory Leak。而Memory Leak是会有多个方面会引起的,比如Drawable, RemoteViews, Receiver, Cursor,InputStream, MediaPlayer等,此外,如果使用JNI也会因为C或C++的代码导致Memory Leak。

    除了Memory Leak,大数据量的操作也会导致OOM,比如之前其他回答提到的Bitmap,还有ListAdapter,如果在getView时处理不当,也很容易导致OOM,所以在ListAdapter时应该尽量使用convertView。

    最后,可以用android.os.StrictMode以及Eclipse的MAT工具来进行OOM和Memory Leak的检测。



    作者:Billy Cui
    链接:https://www.zhihu.com/question/19772290/answer/13325580
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    1回答·1037浏览
  • 慕莱坞7230865 2017-08-24
    源码谁有啊,求救

    http://www.jianshu.com/p/3297687f9a7a 可以参考一下

    1回答·977浏览
  • 慕侠1074980 2017-08-23
    !scroller.isFinished()

    上次你的手指滑动界面 滚动是否已经结束

    2回答·1832浏览
  • qq_好想再爱你_03775484 2017-08-09
    放在scrollview里的问题

    预先加载图片吧

    1回答·985浏览
  • 慕粉1837076732 2017-08-03
    滑动图片从第一张直接跳到最后一张
    //用户滑到了最右边图
    else if (index > children - 1){
        index = children - 1;
    }

    看看你的这段代码是不是大于号写成了小于号

    2回答·1651浏览
  • 慕粉1837076732 2017-08-03
    轮播图显示不全

    感觉你应该是测量那部分代码写错了或者漏写了;代码如下:

    @Override
     //测量,先测量子视图的宽度和高度,然后求出ViewGroup的宽度和高度和
      protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
       // TODO Auto-generated method stub
       super.onMeasure(widthMeasureSpec, heightMeasureSpec);
       //1.求出子视图的个数
       
        children=getChildCount();
       //2.求出子视图的宽和高
       if(children==0){
        setMeasuredDimension(0, 0); //重新设置宽高
       }else{
        measureChildren(widthMeasureSpec, heightMeasureSpec);
        //viewgroup的高度就是第一个子视图的高度,宽度就是所有子视图宽度之和
        View view=getChildAt(0);
        //3.求出ViewGroup的宽和高
        view_height=view.getMeasuredHeight();
        view_width=view.getMeasuredWidth();
        int width=view_width*children;//ViewGroup的总宽度
        setMeasuredDimension(width, view_height);
        
       }
      }


    1回答·3422浏览
数据加载中...
开始学习 免费