国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Android recyclerview實現縱向虛線時間軸的示例代碼

瀏覽:8日期:2022-09-17 15:00:53

效果圖

Android recyclerview實現縱向虛線時間軸的示例代碼

代碼

package com.jh.timelinedemo; import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.DashPathEffect;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View; /** * @Description: Android自定義虛線 * @Date 2019-07-20 10:07 * @Version */public class DividerView extends View { static public int ORIENTATION_HORIZONTAL = 0; static public int ORIENTATION_VERTICAL = 1; private Paint mPaint; private int orientation; public DividerView(Context context) {this(context, null); } public DividerView(Context context, AttributeSet attrs) {super(context, attrs);int dashGap, dashLength, dashThickness;int color; TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.DividerView, 0, 0); try { dashGap = a.getDimensionPixelSize(R.styleable.DividerView_dashGap, 5); dashLength = a.getDimensionPixelSize(R.styleable.DividerView_dashLength, 5); dashThickness = a.getDimensionPixelSize(R.styleable.DividerView_dashThickness, 3); color = a.getColor(R.styleable.DividerView_divider_line_color, 0xff000000); orientation = a.getInt(R.styleable.DividerView_divider_orientation, ORIENTATION_HORIZONTAL);} finally { a.recycle();} mPaint = new Paint();mPaint.setAntiAlias(true);mPaint.setColor(color);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(dashThickness);mPaint.setPathEffect(new DashPathEffect(new float[]{dashGap, dashLength,}, 0)); } public void setBgColor(int color) {mPaint.setColor(color);invalidate(); } @Override protected void onDraw(Canvas canvas) {if (orientation == ORIENTATION_HORIZONTAL) { float center = getHeight() * 0.5f; canvas.drawLine(0, center, getWidth(), center, mPaint);} else { float center = getWidth() * 0.5f; canvas.drawLine(center, 0, center, getHeight(), mPaint);} }}

package com.jh.timelinedemo; import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle;import android.view.View; public class MainActivity extends AppCompatActivity { private RecyclerView rcy; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rcy = findViewById(R.id.rcy); LinearLayoutManager manager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);rcy.setLayoutManager(manager);TimeLineAdapter adapter = new TimeLineAdapter(this);rcy.setAdapter(adapter); }}

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' tools:context='.MainActivity'> <androidx.recyclerview.widget.RecyclerViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:layout_marginTop='20dp' /> </LinearLayout>

package com.jh.timelinedemo; import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup; import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView; /** * * @date:on 2021/7/21 17:38 */public class TimeLineAdapter extends RecyclerView.Adapter<TimeLineAdapter.ViewHolder> { private Context context; public TimeLineAdapter(Context context) {this.context = context; } @NonNull @Override public TimeLineAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, null);ViewHolder viewHolder = new ViewHolder(inflate);return viewHolder; } @Override public void onBindViewHolder(@NonNull TimeLineAdapter.ViewHolder holder, int position) {holder.line_up.setVisibility(position == 0 ? View.INVISIBLE : View.VISIBLE);//第一條數據隱藏頭部線holder.line_down.setVisibility(position == 4 ? View.INVISIBLE : View.VISIBLE);//最后一條數據隱藏底部線 } @Override public int getItemCount() {return 5; } class ViewHolder extends RecyclerView.ViewHolder { private final DividerView line_up, line_down; public ViewHolder(@NonNull View itemView) { super(itemView); line_up = itemView.findViewById(R.id.line_up); line_down = itemView.findViewById(R.id.line_down);} }}

<?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='wrap_content' xmlns:custom='http://schemas.android.com/apk/res-auto' android:orientation='horizontal' android:id='@+id/rl_history_root'> <LinearLayoutandroid:layout_width='10dp'android:layout_height='match_parent'android:gravity='center_horizontal'android:layout_marginLeft='12dp'android:orientation='vertical'> <com.jh.timelinedemo.DividerView android: android:layout_width='1dp' android:layout_height='7dp' android:layerType='software' custom:dashGap='2dp' custom:dashLength='2dp' custom:dashThickness='1dp' custom:divider_line_color='#A3A9BD' custom:divider_orientation='vertical' /> <ImageView android:layout_width='10dp' android:layout_height='10dp' android: android:src='http://www.cgvv.com.cn/bcjs/@mipmap/ic_rhombus_green' /> <com.jh.timelinedemo.DividerView android: android:layout_width='1dp' android:layout_height='match_parent' android:layerType='software' custom:dashGap='2dp' custom:dashLength='2dp' custom:dashThickness='1dp' custom:divider_line_color='#A3A9BD' custom:divider_orientation='vertical' /> </LinearLayout> <LinearLayoutandroid:layout_width='match_parent'android:layout_height='match_parent'android:layout_marginLeft='19dp'android:orientation='vertical'android:paddingBottom='30dp'> <TextView android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_centerVertical='true' android:text='標題 標題 標題' android:textColor='#2f3856' android:textSize='14sp' /> <TextView android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_centerVertical='true' android:layout_marginTop='6dp' android:text='內容 內容 ' android:textColor='#2f3856' android:textSize='14sp' /> </LinearLayout></LinearLayout>

<!-- 垂直方向的虛線 --> <declare-styleable name='DividerView'><!-- 虛線顏色 --><attr name='divider_line_color' format='color'/><!-- 虛線寬度 --><attr name='dashThickness' format='dimension'/><!-- 虛線dash寬度 --><attr name='dashLength' format='dimension'/><!-- 虛線dash間隔 --><attr name='dashGap' format='dimension'/><!-- 虛線朝向 --><attr name='divider_orientation' format='enum'> <enum name='horizontal' value='0'/> <enum name='vertical' value='1'/></attr> </declare-styleable>

到此這篇關于Android recyclerview實現縱向虛線時間軸的示例代碼的文章就介紹到這了,更多相關Android recyclerview縱向虛線時間軸內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 动漫一级毛片 | 泰国情欲片寂寞的寡妇在线观看 | 亚洲欧美精品一区天堂久久 | 国产黄毛片 | 亚洲国产成人精彩精品 | 国产精品青草久久 | 免费一级毛片私人影院a行 免费一级毛片无毒不卡 | 七七国产福利在线二区 | 国产精品18久久久久网站 | 国产成人精品综合在线 | 一级待一黄aaa大片在线还看 | a级毛片免费高清视频 | 中文字幕区| 久久精品亚洲精品国产欧美 | 国产美女操 | 亚洲精品手机在线 | 日韩aⅴ在线观看 | 男女免费爽爽爽在线视频 | 日本免费大黄在线观看 | 国产婷婷一区二区在线观看 | 91香焦视频 | 看一级毛片国产一级毛片 | 狠狠综合久久久综合 | 一本色综合 | 香蕉自拍视频 | 美女视频黄色的免费 | 国产一级毛片视频在线! | 欧美特黄一级高清免费的香蕉 | 成人在线视频免费看 | 亚洲成在人线中文字幕 | 手机看片国产免费 | 狠狠色狠狠色综合日日32 | 亚洲精品系列 | 亚洲精品免费在线观看 | 午夜嘿咻| 国产精品亚洲四区在线观看 | 欧美成人三级伦在线观看 | 国产成人a一区二区 | 老司机免费福利午夜入口ae58 | 狠狠澡夜夜澡人人爽 | 一级女性全黄久久生活片免费 |