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

Android自定義View實(shí)現(xiàn)簡(jiǎn)單文字描邊功能

 更新時(shí)間:2018年12月12日 16:25:22   作者:張雨明  
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)簡(jiǎn)單文字描邊功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)簡(jiǎn)單文字描邊功能的具體代碼,供大家參考,具體內(nèi)容如下

效果圖:

實(shí)現(xiàn)代碼:

package com.example.zhangyu.myview.widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.View;

import com.example.zhangyu.myview.R;

public class TouchPullView extends View {


 //圓的半徑
 private float mCircleRadius;
 private Paint paint;
 private Rect rect=new Rect();
 private int count;


 public TouchPullView(Context context) {
  super(context);
  init();
 }


 public TouchPullView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
  init();
 }

 public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  init();
 }

 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
 public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes);
  init();
 }

 /**
  * 初始化
  */
 private void init() {
  paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  //設(shè)置抗鋸齒
  paint.setAntiAlias(true);
  //設(shè)置防抖動(dòng)
  paint.setDither(true);
  //設(shè)置填充方式
  paint.setStyle(Paint.Style.FILL_AND_STROKE);

  //View的點(diǎn)擊事件
  setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    count++;
    invalidate();//重新繪制
   }
  });

 }

 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);


  //設(shè)置方形畫筆,背景。
  paint.setColor(Color.YELLOW);
  //先繪制底板
  canvas.drawRect(0, 0, getWidth(), getHeight(), paint);


  float x = getWidth() / 2;
  float y = getHeight() / 2;
  float offset = getWidth()/6;

  //繪制圓形
  paint.setColor(Color.GRAY);
  mCircleRadius = offset*1.41f;
  canvas.drawCircle(x, y, mCircleRadius, paint);

  //繪制圖片
  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.pic1);
  if (bitmap != null) {
   canvas.drawBitmap(bitmap,null,new RectF(x-offset,y-offset,x+offset,y+offset),paint);
  }
  

  //繪制文字外層的文字,邊框
  String s = String.valueOf(count);
  paint.setStrokeWidth(10);
  paint.setColor(Color.RED);
  paint.setTextSize(100);
  paint.getTextBounds(s,0,s.length(),rect);
  float textWidth = rect.width();
  float textHeight = rect.height();
  x = getWidth()/2-textWidth/2;
  y = getHeight() / 2+textHeight/2;
  canvas.drawText(s, x, y, paint);

  //繪制文字
  paint.setColor(Color.BLUE);
  paint.setStrokeWidth(0);
  canvas.drawText(s, x, y, paint);

 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Gradle Build Error:Some file crunching failed, see logs for details解決辦法

    Android Gradle Build Error:Some file crunching failed, see l

    這篇文章主要介紹了Android Gradle Build Error:Some file crunching failed, see logs for details解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Android用ListView顯示SDCard文件列表的小例子

    Android用ListView顯示SDCard文件列表的小例子

    本文簡(jiǎn)單實(shí)現(xiàn)了用ListView顯示SDCard文件列表,目錄的回退等功能暫不討論,獲取文件列表,files即為所選擇目錄下的所有文件列表
    2013-11-11
  • BottomNavigationView?ViewPager2?Fragment底部菜單導(dǎo)航欄

    BottomNavigationView?ViewPager2?Fragment底部菜單導(dǎo)航欄

    這篇文章主要為大家介紹了BottomNavigationView?ViewPager2?Fragment底部菜單導(dǎo)航欄實(shí)現(xiàn)效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android持久化技術(shù)之SharedPreferences存儲(chǔ)實(shí)例詳解

    Android持久化技術(shù)之SharedPreferences存儲(chǔ)實(shí)例詳解

    這篇文章主要介紹了Android持久化技術(shù)之SharedPreferences存儲(chǔ),結(jié)合實(shí)例形式較為詳細(xì)的分析了SharedPreferences存儲(chǔ)的原理、應(yīng)用及具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-01-01
  • AndroidStudio重新share代碼和上傳到svn新地址教程

    AndroidStudio重新share代碼和上傳到svn新地址教程

    這篇文章主要介紹了AndroidStudio重新share代碼和上傳到svn新地址教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Android Studio如何查看源碼并調(diào)試的方法步驟

    Android Studio如何查看源碼并調(diào)試的方法步驟

    這篇文章主要介紹了Android Studio如何查看源碼并調(diào)試的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Android開發(fā)中如何模擬輸入

    Android開發(fā)中如何模擬輸入

    這篇文章主要介紹了Android開發(fā)中如何模擬輸入,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • Android編程實(shí)現(xiàn)帶有單選按鈕和復(fù)選按鈕的dialog功能示例

    Android編程實(shí)現(xiàn)帶有單選按鈕和復(fù)選按鈕的dialog功能示例

    這篇文章主要介紹了Android編程實(shí)現(xiàn)帶有單選按鈕和復(fù)選按鈕的dialog功能,結(jié)合具體實(shí)例形式分析了Android實(shí)現(xiàn)帶有單選按鈕的dialog對(duì)話框及帶有復(fù)選按鈕的dialog對(duì)話框相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Android接入ffmpeg庫(kù)及問(wèn)題解決方法

    Android接入ffmpeg庫(kù)及問(wèn)題解決方法

    這篇文章主要介紹了Android接入ffmpeg庫(kù)的相關(guān)知識(shí),文中提到了交叉編譯ffmpeg+libx264+libfdk-aac的問(wèn)題及問(wèn)題解決方法,需要的朋友可以參考下
    2022-03-03
  • Android中對(duì)RecyclerView Adapter封裝解析

    Android中對(duì)RecyclerView Adapter封裝解析

    本篇文章主要介紹了Android中對(duì)RecyclerView Adapter封裝解析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06

最新評(píng)論

南平市| 扎囊县| 新化县| 东辽县| 罗甸县| 舒兰市| 德令哈市| 财经| 兖州市| 无锡市| 巴马| 信丰县| 罗源县| 绿春县| 莲花县| 福海县| 辽中县| 平南县| 潞西市| 昔阳县| 北安市| 云霄县| 清丰县| 灌阳县| 昭通市| 平罗县| 乐业县| 怀宁县| 融水| 南部县| 永善县| 扶沟县| 常宁市| 抚顺市| 翁源县| 舒兰市| 桃江县| 苗栗市| 古蔺县| 桓台县| 石景山区|