欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)帶有邊框的ListView和item的方法

 更新時間:2016年07月08日 11:58:58   作者:manymore13  
這篇文章主要介紹了Android實現(xiàn)帶有邊框的ListView和item的方法,結(jié)合實例形式分析了ListView和item四周添加邊框的實現(xiàn)步驟與相關(guān)技巧,需要的朋友可以參考下

本文實例講述了Android實現(xiàn)帶有邊框的ListView和item的方法。分享給大家供大家參考,具體如下:

想為ListView和item四周添加邊框有兩種方法:

1.貼一張帶有邊框效果的背景圖

2.自定義Draw的方法

第一種方法較第二種方法更耗系統(tǒng)資源,但是用法簡單,只需要一張圖設(shè)置為相應(yīng)控件的背景即可,而第二種靈活性好些。

這次是實現(xiàn)帶有邊框的ListView和item,為此寫個簡單Demo 學(xué)習(xí)學(xué)習(xí)

先看下Demo運行效果吧

下面是主要代碼,主要是用到Canvas.drawLine(...)代碼簡單,我就不啰嗦了

BorderListView.Java

package com.borderlistview.manymore13;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
public class BorderListView extends ListView{
  public BorderListView(Context context) {
    super(context);
  }
  public BorderListView(Context context, AttributeSet attrs)
  {
    super(context, attrs);
  }
  @Override
  protected void onDraw(Canvas canvas) {
    float width = getWidth();
    float height= getHeight();
    int lineWidth = 10; // 線寬十個像素
    int grayColor = Color.GRAY;
    Paint mLinePaint = new Paint();
    mLinePaint.setColor(grayColor);
    mLinePaint.setStyle(Paint.Style.STROKE);
    mLinePaint.setAntiAlias(true);
    mLinePaint.setStrokeWidth(lineWidth);
    // 畫四周的邊框 注意下面的 lineWidth/2 不加的話四周的線可能不一樣粗
    canvas.drawLine(0f, 0+lineWidth/2, width, 0+lineWidth/2, mLinePaint);
    canvas.drawLine(width-lineWidth/2, 0, width-lineWidth/2, height, mLinePaint);
    canvas.drawLine(width-lineWidth/2, height-lineWidth/2, 0, height-lineWidth/2, mLinePaint);
    canvas.drawLine(0+lineWidth/2, height, 0+lineWidth/2, 0,mLinePaint);
    super.onDraw(canvas);
  }
}

ListViewItem.java   ListView的item 添加虛線和紅線

package com.borderlistview.manymore13;
import com.manymore13.MyListview.R;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
 public class ListViewItem extends RelativeLayout{
  private View viewHolder;
  private TextView tvEventName;
  private Context c;
  private FrameLayout leftFrame;
  public ListViewItem(Context context) {
    super(context);
    LayoutInflater flater = LayoutInflater.from(context);
    viewHolder = flater.inflate(R.layout.item, this);
    getViewAndSetClick();
    c = context;
  }
  private void getViewAndSetClick()
  {
    tvEventName = (TextView)viewHolder.findViewById(R.id.eventName);
    leftFrame = (FrameLayout)viewHolder.findViewById(R.id.frame);
  }
  public void setEventName(String name)
  {
    tvEventName.setText(name);
  }
  public void updateView()
  {
    this.postInvalidate();
  }
  @Override
  protected void dispatchDraw(Canvas canvas) {
    super.dispatchDraw(canvas);
    Resources res = getResources();
    int grayColor = Color.GRAY;
    int redColor = res.getColor(R.color.red);
    int leftFramepos = leftFrame.getRight();
    Paint mLinePaint = new Paint();
    mLinePaint.setColor(redColor);
    mLinePaint.setStyle(Paint.Style.STROKE);
    mLinePaint.setStrokeWidth(2);
    //畫兩條直線
    canvas.drawLine(leftFramepos+20, 0f, leftFramepos+20, getHeight(), mLinePaint);
    canvas.drawLine(leftFramepos+25, 0f, leftFramepos+25, getHeight(), mLinePaint);
    // 畫虛線
    mLinePaint.setColor(grayColor);
    DashPathEffect effect = new DashPathEffect(new float[] { 5,5, 5, 5, 5}, 3);
    mLinePaint.setAntiAlias(true);
    mLinePaint.setPathEffect(effect);
    canvas.drawLine(0, getHeight(), getWidth(), getHeight(), mLinePaint);
  }
}

MyBaseAdaper.java

package com.borderlistview.manymore13;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.ImageView;
public class MyBaseAdaper extends BaseAdapter{
  private List<String> list;
  private Context c;
  MyBaseAdaper(Context c, List<String> list)
  {
    this.list = list;
    this.c = c;
  }
  @Override
  public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
  }
  @Override
  public Object getItem(int i) {
    // TODO Auto-generated method stub
    return list.get(i);
  }
  @Override
  public long getItemId(int i) {
    // TODO Auto-generated method stub
    return i;
  }
  @Override
  public View getView(int i, View view, ViewGroup viewgroup) {
    ListViewItem itemView = null ;
    if(view == null){
      itemView = new ListViewItem(c);
    }else{
      itemView = (ListViewItem)view;
    }
    itemView.setEventName(list.get(i));
    return itemView;
  }
}

另外,在寫本次Demo的時候報了錯誤,有錯就改 Caused by: java.lang.NoSuchMethodException:BorderListView(Context,AttributeSet)

在 BorderListView類中加一個構(gòu)造函數(shù) 搞定

public BorderListView(Context context, AttributeSet attrs)
{
super(context, attrs);
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android資源操作技巧匯總》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進階教程》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android中WebView加載網(wǎng)頁設(shè)置進度條

    Android中WebView加載網(wǎng)頁設(shè)置進度條

    這篇文章主要為大家詳細(xì)介紹了Android中WebView加載網(wǎng)頁設(shè)置進度條的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Android Scroller及下拉刷新組件原理解析

    Android Scroller及下拉刷新組件原理解析

    這篇文章主要為大家詳細(xì)解析了Android Scroller及下拉刷新組件原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android自定義控件ListView下拉刷新的代碼

    Android自定義控件ListView下拉刷新的代碼

    今天小編就為大家分享一篇關(guān)于Android自定義控件ListView下拉刷新的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Android中的常用尺寸單位(dp、sp)快速入門教程

    Android中的常用尺寸單位(dp、sp)快速入門教程

    本文詳細(xì)介紹了Android開發(fā)中常用尺寸單位的含義,重點講解了sp與dp這兩個尺寸單位的本質(zhì)以及它們與px的換算公式,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Android仿微信網(wǎng)絡(luò)加載彈出框

    Android仿微信網(wǎng)絡(luò)加載彈出框

    這篇文章主要為大家詳細(xì)介紹了Android仿微信網(wǎng)絡(luò)加載彈出框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android彈出DatePickerDialog并獲取值的方法

    Android彈出DatePickerDialog并獲取值的方法

    這篇文章主要為大家詳細(xì)介紹了Android彈出DatePickerDialog并獲取值的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • RelativeLayout(相對布局)用法實例講解

    RelativeLayout(相對布局)用法實例講解

    在本文里小編給大家分享了關(guān)于RelativeLayout(相對布局)用法知識點以及對應(yīng)的實例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • Android App中實現(xiàn)簡單的刮刮卡抽獎效果的實例詳解

    Android App中實現(xiàn)簡單的刮刮卡抽獎效果的實例詳解

    這篇文章主要介紹了Android App中實現(xiàn)簡單的刮刮卡抽獎效果的實例詳解,文中主要借助Bitmap的canvas.drawPath的api來實現(xiàn),需要的朋友可以參考下
    2016-03-03
  • Kotlin中的handler如何避免內(nèi)存泄漏詳解

    Kotlin中的handler如何避免內(nèi)存泄漏詳解

    Handler,我們已經(jīng)相當(dāng)熟悉了,而且經(jīng)常用得不亦樂乎,但就是因為太熟悉了,才會偶爾被它反捅一刀,血流不止,下面這篇文章主要給大家介紹了關(guān)于Kotlin中handler如何避免內(nèi)存泄漏的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Android三級緩存原理講解

    Android三級緩存原理講解

    今天小編就為大家分享一篇關(guān)于Android三級緩存原理講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論