最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現帶有邊框的ListView和item的方法

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

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

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

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

2.自定義Draw的方法

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

這次是實現帶有邊框的ListView和item,為此寫個簡單Demo 學習學習

先看下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類中加一個構造函數 搞定

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

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

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

相關文章

  • Android中使用定時器的三種方法

    Android中使用定時器的三種方法

    這篇文章主要為大家詳細介紹了Android定時器的三種使用方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android中Binder詳細學習心得

    Android中Binder詳細學習心得

    這篇文章主要介紹了Android中Binder詳細學習心得,并分析了Binder的詳細用法,需要的朋友參考下吧。
    2018-01-01
  • Android應用中ListView利用OnScrollListener分頁加載數據

    Android應用中ListView利用OnScrollListener分頁加載數據

    這篇文章主要介紹了Android應用中ListView利用OnScrollListener分頁加載數據的方法,包括對OnScrollListener事件順序次數的分析,需要的朋友可以參考下
    2016-03-03
  • Android使用ShareSDK實現應用分享的功能

    Android使用ShareSDK實現應用分享的功能

    這篇文章主要為大家詳細介紹了Android使用ShareSDK實現應用分享的功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android Framework Application Framework層簡單介紹

    Android Framework Application Framework層簡單介紹

    這篇文章主要介紹了 Android Framework Application Framework層簡單介紹的相關資料,需要的朋友可以參考下
    2016-11-11
  • Android實現靜態(tài)廣播監(jiān)聽器的方法

    Android實現靜態(tài)廣播監(jiān)聽器的方法

    這篇文章主要介紹了Android實現靜態(tài)廣播監(jiān)聽器的方法,涉及Android的廣播機制與記錄監(jiān)聽廣播信息的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • sqlite查詢結果在listview中展示的實現

    sqlite查詢結果在listview中展示的實現

    下面小編就為大家?guī)硪黄猻qlite查詢結果在listview中展示的實現。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android類加載流程分析

    Android類加載流程分析

    由于前前前陣子寫了個殼,得去了解類的加載流程,當時記了一些潦草的筆記。這幾天把這些東西簡單梳理了一下,本文分析的代碼基于Android8.1.0源碼,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • android 實現控件左右或上下抖動教程

    android 實現控件左右或上下抖動教程

    這篇文章主要介紹了android 實現控件左右或上下抖動教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android使用注解進行代碼檢查的實現方法

    Android使用注解進行代碼檢查的實現方法

    這篇文章主要介紹了Android如何使用注解進行代碼檢查,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論

视频| 南平市| 肇庆市| 蓬安县| 柳州市| 西丰县| 永福县| 申扎县| 定边县| 龙川县| 兴文县| 镇雄县| 新竹市| 四子王旗| 乐至县| 得荣县| 昆明市| 银川市| 苏尼特右旗| 桓仁| 彩票| 峨边| 龙里县| 凤凰县| 三门峡市| 肥东县| 伊金霍洛旗| 固安县| 武定县| 宜丰县| 崇明县| 玉溪市| 通州市| 思茅市| 青浦区| 崇州市| 南陵县| 信宜市| 基隆市| 鹤山市| 仁怀市|