当前位置: 编程技术>移动开发
本页文章导读:
▪相干绘制一些片段-Shader 有关绘制一些片段--Shader
public class ShaderActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ShaderView shaderView = new ShaderView(getApplicationContext());
.........
▪ 在activity起步后立即弹出PopupWindow的三个方法 在activity启动后立即弹出PopupWindow的三个方法
若在Activity的onCreate()方法中直接写弹出PopupWindow方法会报错,因为activity没有完全启动是不能弹出PopupWindow的。
那我们只需要在activity完全启动后.........
▪ RUI手机圆桌面,开年大更新绝对值得拥有 RUI手机桌面,开年大更新绝对值得拥有!【软件介绍】
RUI手机桌面属于你的智能分类管理桌面
RUI手机桌面为你轻松管理桌面应用,是目前最好的智能分类管理桌面。多套主题,随心而换。.........
[1]相干绘制一些片段-Shader
来源: 互联网 发布时间: 2014-02-18
有关绘制一些片段--Shader
个人感觉shader一般用来绘制背景图的时候用处比较大
public class ShaderActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ShaderView shaderView = new ShaderView(getApplicationContext());
this.setContentView(shaderView,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
}
static class ShaderView extends View{
private Bitmap mBitmap;
private Shader linearGradient ;
private Shader composeShader;
private Shader bitmapShader;
private Shader radialGradient;
private Shader sweepGradient;
private Rect rect;
private Paint paint;
public ShaderView(Context context) {
super(context);
InputStream is = context.getResources().openRawResource(R.drawable.ic_launcher);
mBitmap = BitmapFactory.decodeStream(is);
/**
* 注意1:中心坐标是相对canvas的坐标系设置的。下边SweepGradient类似
* 注意2:positions 坐标最小为0,最大为1,只是一个比例,不是具体值
*/
radialGradient = new RadialGradient(140, 100, 50, new int[]{Color.RED,Color.GREEN,Color.BLUE}, new float[]{0f,0.5f,1f}, TileMode.MIRROR);
/**
* 注意3:postion参数,0指的是正常坐标系的0度角方向,顺时针增加. 0.3则为正常坐标系的-360*0.3
而下边中0.3对应的Color.RED指的是从0.3开始有颜色渐变。而在0~0.3之间没有颜色渐变的
同理,0.6指的是从0.3~0.6 Color.RED变为Color.GREEN 0.6时候,颜色为Color.GREEN 再从0.6~0.8 由Color.GREEN变为 Color.BLUE。 0.8的时候为Color.BLUE 0.8~1 依 然为纯Color.BLUE
*/
sweepGradient = new SweepGradient(100, 340, new int[]{Color.RED, Color.GREEN,Color.BLUE},new float[]{0.3f,0.6f,0.8f});
bitmapShader = new BitmapShader(mBitmap, TileMode.REPEAT, TileMode.REPEAT);
/**
*注意4:如果前四个参数设置为 0,0,0,5 这是纵方向重复,反之设为0,0,5,0单横方向重复
*/
linearGradient = new LinearGradient(0, 0, 5, 5, 0x00ffffff, 0xff000000, TileMode.REPEAT);
/**
* 注意5:new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER) 参数和下边的效果是一样的
*/
composeShader = new ComposeShader(bitmapShader, linearGradient, PorterDuff.Mode.SRC_OVER);
rect = new Rect();
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
rect.set(0, 0, 200, 200);
paint.setShader(radialGradient);
canvas.drawRect(rect, paint);
rect.set(240, 0, 480, 200);
/**
* 注意6:TileMode.REPEAT 和 TileMode.MIRROR 都是重复叠。但是TileMode.CLAMP指的是如果shader不注意画满区间,以边缘颜色填充
*/
paint.setShader(new RadialGradient(340, 100, 50, new int[]{Color.RED,Color.GREEN,Color.BLUE}, new float[]{0f,0.5f,1f}, TileMode.CLAMP));
/**
* 注意7:如果设置了Shader 再设置color是没有效果的
*/
paint.setColor(Color.RED);
canvas.drawRect(rect, paint);
rect.set(0, 240, 200, 480);
paint.setShader(sweepGradient);
canvas.drawRect(rect, paint);
rect.set(240,240,480,480);
paint.setShader(bitmapShader);
canvas.drawRect(rect, paint);
rect.set(0,500,200,700);
paint.setShader(linearGradient);
canvas.drawRect(rect, paint);
rect.set(220,500,480,700);
paint.setShader(composeShader);
canvas.drawRect(rect, paint);
}
}
}个人感觉shader一般用来绘制背景图的时候用处比较大
[2] 在activity起步后立即弹出PopupWindow的三个方法
来源: 互联网 发布时间: 2014-02-18
在activity启动后立即弹出PopupWindow的三个方法
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
// 弹出PopupWindow的具体代码
}
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler.postDelayed(mRunnable, 500);
}
private Runnable mRunnable = new Runnable() {
public void run() {
// 弹出PopupWindow的具体代码
}
};
若在Activity的onCreate()方法中直接写弹出PopupWindow方法会报错,因为activity没有完全启动是不能弹出PopupWindow的。
那我们只需要在activity完全启动后再弹出PopupWindow就行了。
第一种方法: 利用Activity的 onWindowFocusChanged()方法
[java] view
plaincopy
第二种方法: 利用Handler和Runnable
[java] view
plaincopy
第三种方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler.sendEmptyMessageDelayed(SHOWWINDOW, 200);
}private Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
case SHOWWINDOW:
popTipMessage();
break;
case ClOSEWINDOW:
break;
}
}
};
[3] RUI手机圆桌面,开年大更新绝对值得拥有
来源: 互联网 发布时间: 2014-02-18
RUI手机桌面,开年大更新绝对值得拥有!
【软件介绍】
【软件介绍】
RUI手机桌面属于你的智能分类管理桌面
RUI手机桌面为你轻松管理桌面应用,是目前最好的智能分类管理桌面。多套主题,随心而换。实用小插件,操作更便捷。分类、管理、下载程序在桌面上一步到位。
特色功能
1.软件自动分类—所有应用自动分类,常用、游戏、社交、影音、生活、工具六大类,便捷查找软件
2.图标风格—图标智能铺排到首页,免去手动拖动
3. RUI精品导航—必备精品软件,新机、新手装机福音
4. 主题美化—多套主题,随心而换,体验新鲜,卡通猫猫、中国风、金属感、手绘风各式主题,持续添加
5. 内置实用小插件,随时获知天气,快捷设置开关,一键清理任务,
6. 晶莹圆润图标、仿iPhone文件夹
官方下载地址: www.uprui.com
最新技术文章: