- 浏览: 5781312 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
https://github.com/devunwired/textdrawable
有的时候需要将文字转换成Drawable,显示于ImageView中。
源码:
用法:
布局:
使用 supportV4 的 RoundedBitmapDrawable 实现圆角
http://blog.csdn.net/ys743276112/article/details/52316588
有的时候需要将文字转换成Drawable,显示于ImageView中。
源码:
/** * Copyright (c) 2012 Wireless Designs, LLC * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.example.textdrawable.drawable; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.util.TypedValue; /** * A Drawable object that draws text. * A TextDrawable accepts most of the same parameters that can be applied to * {@link android.widget.TextView} for displaying and formatting text. * * Optionally, a {@link Path} may be supplied on which to draw the text. * * A TextDrawable has an intrinsic size equal to that required to draw all * the text it has been supplied, when possible. In cases where a {@link Path} * has been supplied, the caller must explicitly call * {@link #setBounds(android.graphics.Rect) setBounds()} to provide the Drawable * size based on the Path constraints. */ public class TextDrawable extends Drawable { /* Platform XML constants for typeface */ private static final int SANS = 1; private static final int SERIF = 2; private static final int MONOSPACE = 3; /* Resources for scaling values to the given device */ private Resources mResources; /* Paint to hold most drawing primitives for the text */ private TextPaint mTextPaint; /* Layout is used to measure and draw the text */ private StaticLayout mTextLayout; /* Alignment of the text inside its bounds */ private Layout.Alignment mTextAlignment = Layout.Alignment.ALIGN_NORMAL; /* Optional path on which to draw the text */ private Path mTextPath; /* Stateful text color list */ private ColorStateList mTextColors; /* Container for the bounds to be reported to widgets */ private Rect mTextBounds; /* Text string to draw */ private CharSequence mText = ""; /* Attribute lists to pull default values from the current theme */ private static final int[] themeAttributes = { android.R.attr.textAppearance }; private static final int[] appearanceAttributes = { android.R.attr.textSize, android.R.attr.typeface, android.R.attr.textStyle, android.R.attr.textColor }; public TextDrawable(Context context) { super(); //Used to load and scale resource items mResources = context.getResources(); //Definition of this drawables size mTextBounds = new Rect(); //Paint to use for the text mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); mTextPaint.density = mResources.getDisplayMetrics().density; mTextPaint.setDither(true); int textSize = 15; ColorStateList textColor = null; int styleIndex = -1; int typefaceIndex = -1; //Set default parameters from the current theme TypedArray a = context.getTheme().obtainStyledAttributes(themeAttributes); int appearanceId = a.getResourceId(0, -1); a.recycle(); TypedArray ap = null; if (appearanceId != -1) { ap = context.obtainStyledAttributes(appearanceId, appearanceAttributes); } if (ap != null) { for (int i=0; i < ap.getIndexCount(); i++) { int attr = ap.getIndex(i); switch (attr) { case 0: //Text Size textSize = a.getDimensionPixelSize(attr, textSize); break; case 1: //Typeface typefaceIndex = a.getInt(attr, typefaceIndex); break; case 2: //Text Style styleIndex = a.getInt(attr, styleIndex); break; case 3: //Text Color textColor = a.getColorStateList(attr); break; default: break; } } ap.recycle(); } setTextColor(textColor != null ? textColor : ColorStateList.valueOf(0xFF000000)); setRawTextSize(textSize); Typeface tf = null; switch (typefaceIndex) { case SANS: tf = Typeface.SANS_SERIF; break; case SERIF: tf = Typeface.SERIF; break; case MONOSPACE: tf = Typeface.MONOSPACE; break; } setTypeface(tf, styleIndex); } /** * Set the text that will be displayed * @param text Text to display */ public void setText(CharSequence text) { if (text == null) text = ""; mText = text; measureContent(); } /** * Return the text currently being displayed */ public CharSequence getText() { return mText; } /** * Return the current text size, in pixels */ public float getTextSize() { return mTextPaint.getTextSize(); } /** * Set the text size. The value will be interpreted in "sp" units * @param size Text size value, in sp */ public void setTextSize(float size) { setTextSize(TypedValue.COMPLEX_UNIT_SP, size); } /** * Set the text size, using the supplied complex units * @param unit Units for the text size, such as dp or sp * @param size Text size value */ public void setTextSize(int unit, float size) { float dimension = TypedValue.applyDimension(unit, size, mResources.getDisplayMetrics()); setRawTextSize(dimension); } /* * Set the text size, in raw pixels */ private void setRawTextSize(float size) { if (size != mTextPaint.getTextSize()) { mTextPaint.setTextSize(size); measureContent(); } } /** * Return the horizontal stretch factor of the text */ public float getTextScaleX() { return mTextPaint.getTextScaleX(); } /** * Set the horizontal stretch factor of the text * @param size Text scale factor */ public void setTextScaleX(float size) { if (size != mTextPaint.getTextScaleX()) { mTextPaint.setTextScaleX(size); measureContent(); } } /** * Return the current text alignment setting */ public Layout.Alignment getTextAlign() { return mTextAlignment; } /** * Set the text alignment. The alignment itself is based on the text layout direction. * For LTR text NORMAL is left aligned and OPPOSITE is right aligned. * For RTL text, those alignments are reversed. * @param align Text alignment value. Should be set to one of: * * {@link Layout.Alignment#ALIGN_NORMAL}, * {@link Layout.Alignment#ALIGN_NORMAL}, * {@link Layout.Alignment#ALIGN_OPPOSITE}. */ public void setTextAlign(Layout.Alignment align) { if (mTextAlignment != align) { mTextAlignment = align; measureContent(); } } /** * Sets the typeface and style in which the text should be displayed. * Note that not all Typeface families actually have bold and italic * variants, so you may need to use * {@link #setTypeface(Typeface, int)} to get the appearance * that you actually want. */ public void setTypeface(Typeface tf) { if (mTextPaint.getTypeface() != tf) { mTextPaint.setTypeface(tf); measureContent(); } } /** * Sets the typeface and style in which the text should be displayed, * and turns on the fake bold and italic bits in the Paint if the * Typeface that you provided does not have all the bits in the * style that you specified. * */ public void setTypeface(Typeface tf, int style) { if (style > 0) { if (tf == null) { tf = Typeface.defaultFromStyle(style); } else { tf = Typeface.create(tf, style); } setTypeface(tf); // now compute what (if any) algorithmic styling is needed int typefaceStyle = tf != null ? tf.getStyle() : 0; int need = style & ~typefaceStyle; mTextPaint.setFakeBoldText((need & Typeface.BOLD) != 0); mTextPaint.setTextSkewX((need & Typeface.ITALIC) != 0 ? -0.25f : 0); } else { mTextPaint.setFakeBoldText(false); mTextPaint.setTextSkewX(0); setTypeface(tf); } } /** * Return the current typeface and style that the Paint * using for display. */ public Typeface getTypeface() { return mTextPaint.getTypeface(); } /** * Set a single text color for all states * @param color Color value such as {@link Color#WHITE} or {@link Color#argb(int, int, int, int)} */ public void setTextColor(int color) { setTextColor(ColorStateList.valueOf(color)); } /** * Set the text color as a state list * @param colorStateList ColorStateList of text colors, such as inflated from an R.color resource */ public void setTextColor(ColorStateList colorStateList) { mTextColors = colorStateList; updateTextColors(getState()); } /** * Optional Path object on which to draw the text. If this is set, * TextDrawable cannot properly measure the bounds this drawable will need. * You must call {@link #setBounds(int, int, int, int) setBounds()} before * applying this TextDrawable to any View. * * Calling this method with <code>null</code> will remove any Path currently attached. */ public void setTextPath(Path path) { if (mTextPath != path) { mTextPath = path; measureContent(); } } /** * Internal method to take measurements of the current contents and apply * the correct bounds when possible. */ private void measureContent() { //If drawing to a path, we cannot measure intrinsic bounds //We must resly on setBounds being called externally if (mTextPath != null) { //Clear any previous measurement mTextLayout = null; mTextBounds.setEmpty(); } else { //Measure text bounds float desired = Layout.getDesiredWidth(mText, mTextPaint); mTextLayout = new StaticLayout(mText, mTextPaint, (int)desired, mTextAlignment, 1.0f, 0.0f, false); mTextBounds.set(0, 0, mTextLayout.getWidth(), mTextLayout.getHeight()); } //We may need to be redrawn invalidateSelf(); } /** * Internal method to apply the correct text color based on the drawable's state */ private boolean updateTextColors(int[] stateSet) { int newColor = mTextColors.getColorForState(stateSet, Color.WHITE); if (mTextPaint.getColor() != newColor) { mTextPaint.setColor(newColor); return true; } return false; } @Override protected void onBoundsChange(Rect bounds) { //Update the internal bounds in response to any external requests mTextBounds.set(bounds); } @Override public boolean isStateful() { /* * The drawable's ability to represent state is based on * the text color list set */ return mTextColors.isStateful(); } @Override protected boolean onStateChange(int[] state) { //Upon state changes, grab the correct text color return updateTextColors(state); } @Override public int getIntrinsicHeight() { //Return the vertical bounds measured, or -1 if none if (mTextBounds.isEmpty()) { return -1; } else { return (mTextBounds.bottom - mTextBounds.top); } } @Override public int getIntrinsicWidth() { //Return the horizontal bounds measured, or -1 if none if (mTextBounds.isEmpty()) { return -1; } else { return (mTextBounds.right - mTextBounds.left); } } @Override public void draw(Canvas canvas) { if (mTextPath == null) { //Allow the layout to draw the text mTextLayout.draw(canvas); } else { //Draw directly on the canvas using the supplied path canvas.drawTextOnPath(mText.toString(), mTextPath, 0, 0, mTextPaint); } } @Override public void setAlpha(int alpha) { if (mTextPaint.getAlpha() != alpha) { mTextPaint.setAlpha(alpha); } } @Override public int getOpacity() { return mTextPaint.getAlpha(); } @Override public void setColorFilter(ColorFilter cf) { if (mTextPaint.getColorFilter() != cf) { mTextPaint.setColorFilter(cf); } } }
用法:
/** * Copyright (c) 2012 Wireless Designs, LLC * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.example.textdrawable; import android.app.Activity; import android.graphics.Color; import android.graphics.Path; import android.graphics.drawable.ClipDrawable; import android.os.Bundle; import android.os.Handler; import android.text.Layout; import android.util.TypedValue; import android.view.Gravity; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import com.example.textdrawable.drawable.TextDrawable; public class MyActivity extends Activity implements Runnable { //Row One ImageView mImageOne, mImageTwo; //Row Two ImageView mImageThree, mImageFour; //Row Three ImageView mImageFive; //Row Four EditText mEditText; //Row Five Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mImageOne = (ImageView) findViewById(R.id.image1); mImageTwo = (ImageView) findViewById(R.id.image2); mImageThree = (ImageView) findViewById(R.id.image3); mImageFour = (ImageView) findViewById(R.id.image4); mImageFive = (ImageView) findViewById(R.id.image5); mEditText = (EditText) findViewById(R.id.edittext1); mButton = (Button) findViewById(R.id.button1); loadDrawables(); } @Override protected void onResume() { super.onResume(); //Start the animation mAnimator.post(this); } @Override protected void onPause() { super.onPause(); //Stop the animation mAnimator.removeCallbacksAndMessages(null); } private Handler mAnimator = new Handler(); private int mLevel = 0; @Override public void run() { mLevel = (mLevel += 25) % 10000; mImageFive.setImageLevel(mLevel); mAnimator.postDelayed(this, 10); } private void loadDrawables() { /* * Create a simple TextDrawable with all default settings. * Text display settings will be pulled from the theme. */ TextDrawable d = new TextDrawable(this); d.setText("SAMPLE TEXT\nLINE TWO"); d.setTextAlign(Layout.Alignment.ALIGN_CENTER); //Apply to two ImageViews with different scale types mImageOne.setImageDrawable(d); mImageTwo.setImageDrawable(d); /* * Create a second TextDrawable with a path applied. * Applying a path negates implicit bounds measurement, so you * must explicitly call setBounds() with a size that covers your * path constraint. */ d = new TextDrawable(this); d.setText("TEXT DRAWN IN A CIRCLE"); //Customize text size and color d.setTextColor(Color.BLUE); d.setTextSize(12); /* * Create a circular path on which to draw the text. It's best to * keep all path values positive, so the circle is centered such that * it's radius keeps the circle from going below (0, 0). * * We are using complex units so the values scale appropriately to different displays */ Path p = new Path(); int origin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics()); int radius = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, getResources().getDisplayMetrics()); int bound = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics()); p.addCircle(origin, origin, radius, Path.Direction.CW); d.setTextPath(p); //Must call setBounds() since we are using a Path d.setBounds(0, 0, bound, bound); //Apply to two ImageViews with different scale types mImageThree.setImageDrawable(d); mImageFour.setImageDrawable(d); /* * Wrap a simple TextDrawable in a ClipDrawable to animate. One convenient * advantage of ImageView is we can call setImageLevel() on the view itself to affect * the Drawable content. */ d = new TextDrawable(this); d.setText("SHOW ME TEXT"); ClipDrawable clip = new ClipDrawable(d, Gravity.LEFT, ClipDrawable.HORIZONTAL); mImageFive.setImageDrawable(clip); /* * Construct a simple TextDrawable to act as a static prefix * inside of an EditText element */ d = new TextDrawable(this); d.setText("SKU#"); mEditText.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null); /* * Create another simple TextDrawable that will be applied to a TextView * as the left and right drawable instance. The instance is also clickable, * so the drawable text colors will change with state. */ d = new TextDrawable(this); d.setText("TEXT\nDRAW"); //Enlarge the text size d.setTextSize(20); //Set the text colors from a resource list d.setTextColor(getResources().getColorStateList(R.color.text_colors)); //Center align the text d.setTextAlign(Layout.Alignment.ALIGN_CENTER); //Apply to a TextView, using the intrinsic bounds method // TextDrawable internally calculates the required size. mButton.setCompoundDrawablesWithIntrinsicBounds(d, null, d, null); } }
布局:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="*" android:padding="5dp"> <TableRow> <ImageView android:id="@+id/image1" android:layout_width="match_parent" android:layout_height="100dp" android:scaleType="center"/> <ImageView android:id="@+id/image2" android:layout_width="match_parent" android:layout_height="100dp" android:scaleType="centerCrop"/> </TableRow> <TableRow> <ImageView android:id="@+id/image3" android:layout_width="match_parent" android:layout_height="100dp" android:scaleType="center" /> <ImageView android:id="@+id/image4" android:layout_width="match_parent" android:layout_height="100dp" android:scaleType="fitCenter" /> </TableRow> <ImageView android:id="@+id/image5" android:layout_width="match_parent" android:layout_height="100dp" android:scaleType="fitCenter" /> <EditText android:id="@+id/edittext1" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:digits="0123456789" android:imeOptions="actionDone"/> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Click Me" /> </TableLayout>
使用 supportV4 的 RoundedBitmapDrawable 实现圆角
http://blog.csdn.net/ys743276112/article/details/52316588
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 6819网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10251一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2572算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2798在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 61121.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 933先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1305有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2177用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2553纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2529Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1077提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3425比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1667基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1868可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2128ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3348先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3683按比例放大图片,不拉伸失真 import android. ...
相关推荐
将字符串转化成drawable
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与Resource ID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 ...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与Resource ID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 ...
转换相关 -> ConvertUtils.java -> Test bytes2HexString, hexString2Bytes : byteArr 与 hexString 互转 chars2Bytes, bytes2Chars : charArr 与 byteArr 互转 memorySize2Byte, byte2MemorySize : 以 unit 为单位...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了。 搜索框: 一般是EditText实现,本文 实现 TextView图片和...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.8 手机页面的转换 3.9 调用另一个Activity 3.10 不同Activity之间的数据传递 3.11 返回数据到前一个Activity 3.12 具有交互功能的对话框 3.13 置换文字颜色的机关 3.14 ...
|--IO将输入流转成字节 |--Json读js资源文件 |--layout布局样式之style配置 |--listview 页面 图片加文字 |--ListView之CursorAdapter异步查询框架之短信 |--ListView之动态添加子view |--ListView优化之分页加载 |...