Android可上下左右滑的listview例子

 更新时间:2016年10月2日 16:23  点击:1631
listview在安卓开发中我们经常的用到了今天我们来看一篇关于Android可上下左右滑的listview例子,希望这篇文章能够让各位深入的理解到listview的使用。

之前没有用到过这样需求的listview,最近项目需求,所以写了一下,很顺利,下面上代码

1、activity_test

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

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/tv_one"
                    android:layout_width="100dp"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="一年级"
                    android:textColor="@color/black"
                    android:textSize="@dimen/medium_text_size" />

                <TextView
                    android:id="@+id/tv_two"
                    android:layout_width="100dp"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="二年级"
                    android:textColor="@color/black"
                    android:textSize="@dimen/medium_text_size" />

                <TextView
                    android:id="@+id/tv_three"
                    android:layout_width="100dp"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="三年级"
                    android:textColor="@color/black"
                    android:textSize="@dimen/medium_text_size" />


                <TextView
                    android:id="@+id/tv_four"
                    android:layout_width="100dp"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="四年级"
                    android:textColor="@color/black"
                    android:textSize="@dimen/medium_text_size" />

                <TextView
                    android:id="@+id/tv_five"
                    android:layout_width="100dp"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="五年级"
                    android:textColor="@color/black"
                    android:textSize="@dimen/medium_text_size" />

            </LinearLayout>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/view"></View>

            <ListView
                android:id="@+id/lv_test"
                android:layout_width="match_parent"
                android:layout_height="match_parent"></ListView>
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>


2、item_test

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_one"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="一年级"
                android:textColor="@color/black"
                android:textSize="@dimen/medium_text_size" />

            <TextView
                android:id="@+id/tv_two"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="二年级"
                android:textColor="@color/black"
                android:textSize="@dimen/medium_text_size" />

            <TextView
                android:id="@+id/tv_three"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="三年级"
                android:textColor="@color/black"
                android:textSize="@dimen/medium_text_size" />


            <TextView
                android:id="@+id/tv_four"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="四年级"
                android:textColor="@color/black"
                android:textSize="@dimen/medium_text_size" />

            <TextView
                android:id="@+id/tv_five"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="五年级"
                android:textColor="@color/black"
                android:textSize="@dimen/medium_text_size" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/view"></View>
    </LinearLayout>
</LinearLayout>


3、TestActivity(包括了Adapter)

package cn.zmit.frame.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

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

import cn.zmit.frame.R;

/**
* Created by kyle on 2016/5/13 0013.
*/
public class TestActivity extends Activity {
private List<String[]> lists = new ArrayList<>();
ListView mLvTest;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tests);
mLvTest= (ListView) findViewById(R.id.lv_test);
for(int i=0;i<15;i++){
String[]strings={“蛮王”+i,”剑圣”+i,”赵信”+i,”小龙”+i,”大龙”+i};
lists.add(strings);
}
mLvTest.setAdapter(new MyAdapter());
}
private class MyAdapter extends BaseAdapter {

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

@Override
public Object getItem(int position) {
return lists.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder holder;
if (convertView == null) {
convertView = View.inflate(TestActivity.this, R.layout.item_test, null);
holder = new MyHolder();
holder.mTvOne = (TextView) convertView.findViewById(R.id.tv_one);
holder.mTvTwo = (TextView) convertView.findViewById(R.id.tv_two);
holder.mTvThree = (TextView) convertView.findViewById(R.id.tv_three);
holder.mTvFour = (TextView) convertView.findViewById(R.id.tv_four);
holder.mTvFive = (TextView) convertView.findViewById(R.id.tv_five);
convertView.setTag(holder);
}else {
holder= (MyHolder) convertView.getTag();
}
holder.mTvOne.setText(lists.get(position)[0]);
holder.mTvTwo.setText(lists.get(position)[1]);
holder.mTvThree.setText(lists.get(position)[2]);
holder.mTvFour.setText(lists.get(position)[3]);
holder.mTvFive.setText(lists.get(position)[4]);
return convertView;
}
}

private class MyHolder {
private TextView mTvOne;
private TextView mTvTwo;
private TextView mTvThree;
private TextView mTvFour;
private TextView mTvFive;
}
}

Android与JS数据交互在用户点击时由js反馈数据给安卓然后进行显示了,下面我们来看一个点击webview里的图片放大的例子,具体的细节操作如下所示。

废话不多说,直接上代码:

private WebView mWebView;
mWebView.getSettings().setJavaScriptEnabled(true);//这个没的说,首先得支持js
mWebView.loadUrl("www.111cn.net");
mWebView.addJavascriptInterface(new MyJavascriptInterface(this), "imagelistner");//自定义一个MyJavascript接口
mWebView.setWebViewClient(new MyWebViewClient());//MyWebViewClient继承于WebViewClient
MyJavascriptInterface:

// js通信接口

public class MyJavascriptInterface {
    private Context context;
    public MyJavascriptInterface(Context context) {
        this.context = context;
    }
    @JavascriptInterface //值得注意的是,当你的openImage方法没有被执行,也就是说mWebView.addJavascriptInterface没有作用
那么就请在这里加上@JavascriptInterface,加之前记得先导入
    public void openImage(String img) {
        System.out.println(img);
        Intent intent = new Intent();
        intent.putExtra("image", img);
        intent.setClass(context, ShowWebImageActivity.class);
        context.startActivity(intent);
        System.out.println(img);
    }
}
private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        view.getSettings().setJavaScriptEnabled(true);
        super.onPageFinished(view, url);
        // html加载完成之后,添加监听图片的点击js函数
        addImageClickListner();//这个方法在下面
    }
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.getSettings().setJavaScriptEnabled(true);
        super.onPageStarted(view, url, favicon);
    }
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
    }
}
 

// 注入js函数监听

private void addImageClickListner() {
    // 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去
    mWebView.loadUrl("javascript:(function(){" +
            "var objs = document.getElementsByTagName(\"img\"); " +
            "for(var i=0;i<objs.length;i++)  " +
            "{"
            + "    objs[i].onclick=function()  " +
            "    {  "
            + "        window.imagelistner.openImage(this.src);  " +
            "    }  " +
            "}" +
            "})()");
}

显示图片的类

package cn.zmit.xiangrikui.test;


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

import cn.zmit.xiangrikui.R;

public class ShowWebImageActivity extends Activity {
    private String imagePath = null;
    private ImageView imageView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_webimage);
        imagePath = getIntent().getStringExtra("image");
        imageView = (ImageView) findViewById(R.id.show_webimage_imageview);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        com.squareup.picasso.Target target = new com.squareup.picasso.Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                imageView.setImageBitmap(big(bitmap));
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {

            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {

            }
        };
        Picasso.with(this).load(imagePath).into(target);
    }

    public Bitmap big(Bitmap b) {
        Display d = (ShowWebImageActivity.this).getWindowManager().getDefaultDisplay();
        int x = d.getWidth();//当前屏幕宽度   px
        int y = d.getHeight();//当前屏幕高度  px
       
        int w = b.getWidth();
        int h = b.getHeight();
       
        float sx = (float) x / w;//要强制转换,不转换我的在这总是死掉。
        float sy = (float) y / h;
        float total=Math.min(sx,sy);
        Matrix matrix = new Matrix();
        matrix.postScale(total, total); // 长和宽放大缩小的比例
        Bitmap resizeBmp = Bitmap.createBitmap(b, 0, 0, w,
                h, matrix, true);
        return resizeBmp;
    }
}

Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。

compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true。
Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。

一直都没有接触排序,突然要实现对List的排序,找了一下资料,发现Collections.sort( )这个方法。

Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 。

规则用来判断对象,算法则考虑如何进行排序。

对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则。方式有两种:

第一种,java.lang下面的一个接口:Comparable。可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o)

其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序。

如当前对象>o对象,则返回值>0;

如当前对象=o对象,则返回值=0;

如当前对象<o对象,则返回值<0;

第二种方式,java.util下有一个Comparator(比较器)。它拥有compare( )方法,用来比较两个对象。

至此,我采用了第二种方式。下面是定义的排序规则:


public class JsonComparator implements Comparator&lt;NewRecordEntity&gt;{
    
    @Override
    public int compare(NewRecordEntity arg0, NewRecordEntity arg1) {
        
        String data1=TimeStamp2Date(arg0.getOldtime()+"", "yyyy-MM-dd HH:mm:ss");
        String data2=TimeStamp2Date(arg1.getOldtime()+"", "yyyy-MM-dd HH:mm:ss");
        //设定时间的模板
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                //得到指定模范的时间
                try {
                    Date d1 = sdf.parse(data1);
                    Date d2 = sdf.parse(data2);
                    if(d1.getTime() - d2.getTime()&gt;0){
                        return -1;
                    }else if(d1.getTime() - d2.getTime()&lt;0){
                        return 1;
                    }
                    
                    
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
        
        return 0;
    }
    public String TimeStamp2Date(String timestampString, String formats){  
          Long timestamp = Long.parseLong(timestampString)*1000;  
          String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));  
          return date;  
        }
}

使用:

//排序操作
JsonComparator pComparator =  new JsonComparator();
Collections.sort(list, pComparator);
 

这样就实现了排序功能。如果是对数组进行排序,同样的原理,只不过换成Arrays.sort()方法。

毛玻璃效果就是屏幕上有一些水珠一样的东西了,我们在苹果的壁纸中可以看到这种效果,下面来看在安卓中实现毛玻璃模糊效果代码,具体的如下所示。

手机API等级在16以上的,可以用这个方法:

if (VERSION.SDK_INT > 16) {
    Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
    final RenderScript rs = RenderScript.create(context);
    final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
            Allocation.USAGE_SCRIPT);
    final Allocation output = Allocation.createTyped(rs, input.getType());
    final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
    script.setRadius(radius /* e.g. 3.f */);
    script.setInput(input);
    script.forEach(output);
    output.copyTo(bitmap);
    return bitmap;
}

假设手机API等级小于16,那就用这个方法:

  @SuppressLint("NewApi")
    public static Bitmap fastblur(Context context, Bitmap sentBitmap, int radius) {

        Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
        if (radius < 1) {
            return (null);
        }
        int w = bitmap.getWidth();
        int h = bitmap.getHeight();
        int[] pix = new int[w * h];
//        Log.e("pix", w + " " + h + " " + pix.length);
        bitmap.getPixels(pix, 0, w, 0, 0, w, h);
        int wm = w - 1;
        int hm = h - 1;
        int wh = w * h;
        int div = radius + radius + 1;
        int r[] = new int[wh];
        int g[] = new int[wh];
        int b[] = new int[wh];
        int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
        int vmin[] = new int[Math.max(w, h)];
        int divsum = (div + 1) >> 1;
        divsum *= divsum;
        int temp = 256 * divsum;
        int dv[] = new int[temp];
        for (i = 0; i < temp; i++) {
            dv[i] = (i / divsum);
        }
        yw = yi = 0;
        int[][] stack = new int[div][3];
        int stackpointer;
        int stackstart;
        int[] sir;
        int rbs;
        int r1 = radius + 1;
        int routsum, goutsum, boutsum;
        int rinsum, ginsum, binsum;
        for (y = 0; y < h; y++) {
            rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
            for (i = -radius; i <= radius; i++) {
                p = pix[yi + Math.min(wm, Math.max(i, 0))];
                sir = stack[i + radius];
                sir[0] = (p & 0xff0000) >> 16;
                sir[1] = (p & 0x00ff00) >> 8;
                sir[2] = (p & 0x0000ff);
                rbs = r1 - Math.abs(i);
                rsum += sir[0] * rbs;
                gsum += sir[1] * rbs;
                bsum += sir[2] * rbs;
                if (i > 0) {
                    rinsum += sir[0];
                    ginsum += sir[1];
                    binsum += sir[2];
                } else {
                    routsum += sir[0];
                    goutsum += sir[1];
                    boutsum += sir[2];
                }
            }
            stackpointer = radius;
            for (x = 0; x < w; x++) {
                r[yi] = dv[rsum];
                g[yi] = dv[gsum];
                b[yi] = dv[bsum];
                rsum -= routsum;
                gsum -= goutsum;
                bsum -= boutsum;
                stackstart = stackpointer - radius + div;
                sir = stack[stackstart % div];
                routsum -= sir[0];
                goutsum -= sir[1];
                boutsum -= sir[2];
                if (y == 0) {
                    vmin[x] = Math.min(x + radius + 1, wm);
                }
                p = pix[yw + vmin[x]];
                sir[0] = (p & 0xff0000) >> 16;
                sir[1] = (p & 0x00ff00) >> 8;
                sir[2] = (p & 0x0000ff);
                rinsum += sir[0];
                ginsum += sir[1];
                binsum += sir[2];
                rsum += rinsum;
                gsum += ginsum;
                bsum += binsum;
                stackpointer = (stackpointer + 1) % div;
                sir = stack[(stackpointer) % div];
                routsum += sir[0];
                goutsum += sir[1];
                boutsum += sir[2];
                rinsum -= sir[0];
                ginsum -= sir[1];
                binsum -= sir[2];
                yi++;
            }
            yw += w;
        }
        for (x = 0; x < w; x++) {
            rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
            yp = -radius * w;
            for (i = -radius; i <= radius; i++) {
                yi = Math.max(0, yp) + x;
                sir = stack[i + radius];
                sir[0] = r[yi];
                sir[1] = g[yi];
                sir[2] = b[yi];
                rbs = r1 - Math.abs(i);
                rsum += r[yi] * rbs;
                gsum += g[yi] * rbs;
                bsum += b[yi] * rbs;
                if (i > 0) {
                    rinsum += sir[0];
                    ginsum += sir[1];
                    binsum += sir[2];
                } else {
                    routsum += sir[0];
                    goutsum += sir[1];
                    boutsum += sir[2];
                }
                if (i < hm) {
                    yp += w;
                }
            }
            yi = x;
            stackpointer = radius;
            for (y = 0; y < h; y++) {
                // Preserve alpha channel: ( 0xff000000 & pix[yi] )
                pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];
                rsum -= routsum;
                gsum -= goutsum;
                bsum -= boutsum;
                stackstart = stackpointer - radius + div;
                sir = stack[stackstart % div];
                routsum -= sir[0];
                goutsum -= sir[1];
                boutsum -= sir[2];
                if (x == 0) {
                    vmin[y] = Math.min(y + r1, hm) * w;
                }
                p = x + vmin[y];
                sir[0] = r[p];
                sir[1] = g[p];
                sir[2] = b[p];
                rinsum += sir[0];
                ginsum += sir[1];
                binsum += sir[2];
                rsum += rinsum;
                gsum += ginsum;
                bsum += binsum;
                stackpointer = (stackpointer + 1) % div;
                sir = stack[stackpointer];
                routsum += sir[0];
                goutsum += sir[1];
                boutsum += sir[2];
                rinsum -= sir[0];
                ginsum -= sir[1];
                binsum -= sir[2];
                yi += w;
            }
        }
//        Log.e("pix", w + " " + h + " " + pix.length);
        bitmap.setPixels(pix, 0, w, 0, 0, w, h);
        return (bitmap);
    }
毛玻璃效果,直接拿去用就行了。

ToolBar工具昨天介绍过相关的教程今天我们来看看关于android中ToolBar设置NavigationIcon图标不显示、失败、没反应,绝对管用问题的解决办法。

最近开发android app,程序中用到ToolBar控件,想设置ToolBar的NavigationIcon图标图标可是怎么设置都不管用,一直显示控件自带的。
异常:
在布局XML中设置android:navigationIcon=”@drawable/icon”或者在代码中设置都无法自定义成自己需要设置的NavigationIcon图片。
代码设置NavigationIcon如下:


Toolbar toolbar = (Toolbar)findViewById(R.id.my_toolbar);
toolbar.setNavigationIcon(R.drawable.icon);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
setSupportActionBar(toolbar);

解决办法:

如果你在XML布局中设置ToolBar设置NavigationIcon,那么现在需要放弃这种做法,否则始终无法显示出你设置的NavigationIcon;
必须使用代码方式:


setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("");
toolbar.setSubtitle("");
setSupportActionBar(toolbar);
 
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
toolbar.setNavigationIcon(R.mipmap.userphoto);

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • C#实现带进度条的ListView

    这篇文章主要介绍了C#实现带进度条的ListView 的相关资料,需要的朋友可以参考下...2020-06-25
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • php使用floor去掉小数点的例子

    floor会产生小数了如果我们不希望有小数我们是可以去除小数点的了,下面一聚教程小编来为各位介绍php使用floor去掉小数点的例子,希望对各位有帮助。 float floor (...2016-11-25
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20
  • Android判断当前屏幕是全屏还是非全屏

    在安卓开发时我碰到一个问题就是需要实现全屏,但又需要我们来判断出用户是使用了全屏或非全屏了,下面我分别找了两段代码,大家可参考。 先来看一个android屏幕全屏实...2016-09-20