思聪吃热狗
用java写的一个小游戏,日常练习用的,仅供参考。使用awt,挺有意思的
程序猿表白代码
内容包含从网络收集的多种表白代码,玫瑰花网页,表白网页,vb小程序
JAVA Socket远程执行任务
写的一个关于socket的例子,实现了客户端和服务器端的简单交互,客户端给服务端发送命令和jar包由服务端执行后返回结果
Android动画详解
这是我学习动画时自己写的一些例子,很全,包括补间动画、逐帧动画、属性动画,还有一些自定义动画
Android属性动画超全超详细
写的一个非常全面非常详细的Android属性动画例子,包含各种创建方式和使用方式
AlertDialog常用对话框
AlertDialog常用创建方式,共演示了五种创建方式,每种都有注释。
python爬虫程序集合
里面大概有4个爬虫程序吧,有爬取google,有百度的,有bing的,拿去参考,希望对你的学习有帮助
python入门程序集合
学习python时写的一些小程序,里面大约有几十个类,都是一些基础的知识,对初学者有很大帮助
QQ聊天机器人
public class MainActivity extends Activity
{
/**
* 展示消息的listview
*/
private ListView mChatView;
/**
* 文本域
*/
private EditText mMsg;
/**
* 存储聊天消息
*/
private List<ChatMessage> mDatas = new ArrayList<ChatMessage>();
/**
* 适配器
*/
private ChatMessageAdapter mAdapter;
private Handler mHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
ChatMessage from = (ChatMessage) msg.obj;
mDatas.add(from);
mAdapter.notifyDataSetChanged();
mChatView.setSelection(mDatas.size() - 1);
};
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main_chatting);
initView();
mAdapter = new ChatMessageAdapter(this, mDatas);
mChatView.setAdapter(mAdapter);
}
private void initView()
{
mChatView = (ListView) findViewById(R.id.id_chat_listView);
mMsg = (EditText) findViewById(R.id.id_chat_msg);
mDatas.add(new ChatMessage(ChatMessage.Type.INPUT, "我是小跟班,很高兴为您服务"));
}
public void sendMessage(View view)
{
final String msg = mMsg.getText().toString();
if (TextUtils.isEmpty(msg))
{
Toast.makeText(this, "您还没有填写信息呢...", Toast.LENGTH_SHORT).show();
return;
}
ChatMessage to = new ChatMessage(ChatMessage.Type.OUTPUT, msg);
to.setDate(new Date());
mDatas.add(to);
mAdapter.notifyDataSetChanged();
mChatView.setSelection(mDatas.size() - 1);
mMsg.setText("");
// 关闭软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// 得到InputMethodManager的实例
if (imm.isActive())
{
// 如果开启
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
InputMethodManager.HIDE_NOT_ALWAYS);
// 关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的
}
new Thread()
{
public void run()
{
ChatMessage from = null;
try
{
from = HttpUtils.sendMsg(msg);
} catch (Exception e)
{
from = new ChatMessage(ChatMessage.Type.INPUT, "服务器挂了呢...");
}
Message message = Message.obtain();
message.obj = from;
mHandler.sendMessage(message);
};
}.start();
}
}
仿QQ气泡拖动删除
private RelativeLayout root;
private BounceCircle messageCount;
private BounceCircle contactCount;
private ImageView messageIcon;
private ImageView contactIcon;
private int radius = 40; // 圆形半径
private boolean init = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
root = (RelativeLayout) findViewById(R.id.activity_main);
messageIcon = (ImageView) findViewById(R.id.message_icon);
contactIcon = (ImageView) findViewById(R.id.contact_icon);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// 只需执行一次,在onWindowFocusChanged方法中才能获取到控件在屏幕中的坐标
if (init) {
init =false;
int[] position = new int[2];
messageIcon.getLocationOnScreen(position);
messageCount = new BounceCircle(this, radius, position[0] + messageIcon.getWidth(), (position[1] - Util.getTopBarHeight(this)));
messageCount.setNumber("20");
messageCount.setFinishListener(new BounceCircle.FinishListener() {
@Override
public void onFinish() {
Toast.makeText(MainActivity.this, "message count dismiss", Toast.LENGTH_LONG).show();
}
});
root.addView(messageCount);
contactIcon.getLocationOnScreen(position);
contactCount = new BounceCircle(this, radius, position[0] + contactIcon.getWidth(), (position[1] - Util.getTopBarHeight(this)));
contactCount.setNumber("30");
contactCount.setFinishListener(new BounceCircle.FinishListener() {
@Override
public void onFinish() {
Toast.makeText(MainActivity.this, "contract count dismiss", Toast.LENGTH_LONG).show();
}
});
root.addView(contactCount);
}
}
各类监听合集
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
Object month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
Log.e("time_now", ""+year+"_"+month+1+"_"+day+"_"+hour+"_"+minute);
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss");
Date curDate = new Date(System.currentTimeMillis());
String str10 = formatter.format(curDate);
Log.e("time_now1",""+str10);
long time=System.currentTimeMillis();
Log.e("time_now2", ""+time);
TextView textview1 = (TextView)findViewById(R.id.textview1);
textview1.setAutoLinkMask(Linkify.ALL);
String linktext = "百度链接 www.baidu.com";
textview1.setText(linktext);
//AutoCompleteTextView
AutoCompleteTextView autv_1 = (AutoCompleteTextView)findViewById(R.id.autv_1);
String[] str = {"ab","abc","abcd"};
ArrayAdapter<String> stringArrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str);
autv_1.setAdapter(stringArrayAdapter);
//Button 点击
Button btn_1 = (Button)findViewById(R.id.btn_1);
btn_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "按钮点击监听", Toast.LENGTH_SHORT).show();
}
});
导出Excel文件
public class MainActivity extends AppCompatActivity {
private List<ExcelData> listExcelData=new ArrayList<ExcelData>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addDate();
}
private void addDate(){
ExcelData data1=new ExcelData("张三", "19","数学","男","大一","123");
ExcelData data2=new ExcelData("李四", "20","语文","女","大二","456");
ExcelData data3=new ExcelData("王五", "21","英语","不明","大三","789");
ExcelData data4=new ExcelData("赵六", "22","化学","不明","大四","135");
ExcelData data5=new ExcelData("阿七", "23","生物","不明","大五","246");
ExcelData data6=new ExcelData("傻八", "24","物理","不明","大六","159");
listExcelData.add(data1);
listExcelData.add(data2);
listExcelData.add(data3);
listExcelData.add(data4);
listExcelData.add(data5);
listExcelData.add(data6);
}
public void createExcel(View v) throws FileNotFoundException {
File file;
File dir = new File(Environment.getExternalStorageDirectory().toString());
Log.e("飞","路径是:"+dir.getAbsolutePath());
file=new File(Environment.getExternalStorageDirectory(),"excel.xls");
if (!dir.exists()){
Log.e("飞","创建文件夹");
dir.mkdirs();
}
WritableWorkbook wwb;
OutputStream os= null;
os = new FileOutputStream(file);
数据存储练习
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 测试sp存储
public void onClickSP(View v) {
startActivity(new Intent(this, SpActivity.class));
}
// 测试手机内部文件存储
public void onClickIF(View v) {
startActivity(new Intent(this, IFActivity.class));
}
// 测试手机外部文件存储
public void onClickOF(View v) {
startActivity(new Intent(this, OFActivity.class));
}
// 测试Sqlite数据库存储
public void onClickDB(View v) {
startActivity(new Intent(this, DBActivity.class));
}
public void onClickNW(View v) {
startActivity(new Intent(this, NetworkActivity.class));
}
}
简易相机练习
简易相机用以练习
private SurfaceView surface;
private Button shutter,position,back;//快门
private SurfaceHolder holder;
private Camera camera;//声明相机
private String filepath = "";//照片保存路径
private int cameraPosition = 1;//0代表前置摄像头,1代表后置摄像头
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//没有标题
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//拍照过程屏幕一直处于高亮
//设置手机屏幕朝向,一共有7种
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
//SCREEN_ORIENTATION_BEHIND: 继承Activity堆栈中当前Activity下面的那个Activity的方向
//SCREEN_ORIENTATION_LANDSCAPE: 横屏(风景照) ,显示时宽度大于高度
//SCREEN_ORIENTATION_PORTRAIT: 竖屏 (肖像照) , 显示时高度大于宽度
//SCREEN_ORIENTATION_SENSOR 由重力感应器来决定屏幕的朝向,它取决于用户如何持有设备,当设备被旋转时方向会随之在横屏与竖屏之间变化
//SCREEN_ORIENTATION_NOSENSOR: 忽略物理感应器——即显示方向与物理感应器无关,不管用户如何旋转设备显示方向都不会随着改变("unspecified"设置除外)
//SCREEN_ORIENTATION_UNSPECIFIED: 未指定,此为默认值,由Android系统自己选择适当的方向,选择策略视具体设备的配置情况而定,因此不同的设备会有不同的方向选择
//SCREEN_ORIENTATION_USER: 用户当前的首选方向
setContentView(R.layout.activity_main);
back = (Button) findViewById(R.id.camera_back);
position = (Button) findViewById(R.id.camera_position);
surface = (SurfaceView) findViewById(R.id.camera_surface);
shutter = (Button) findViewById(R.id.camera_shutter);
holder = surface.getHolder();//获得句柄
holder.addCallback(this);//添加回调
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//surfaceview不维护自己的缓冲区,等待屏幕渲染引擎将内容推送到用户面前
//设置监听
back.setOnClickListener(listener);
position.setOnClickListener(listener);
shutter.setOnClickListener(listener);
贝塞尔曲线
从2阶到7阶的贝赛尔曲线
private static final int MAX_COUNT = 7; // 贝塞尔曲线最大阶数
private static final int REGION_WIDTH = 30; // 合法区域宽度
private static final int FINGER_RECT_SIZE = 60; // 矩形尺寸
private static final int BEZIER_WIDTH = 10; // 贝塞尔曲线线宽
private static final int TANGENT_WIDTH = 6; // 切线线宽
private static final int CONTROL_WIDTH = 12; // 控制点连线线宽
private static final int CONTROL_RADIUS = 12; // 控制点半径
private static final int TEXT_SIZE = 40; // 文字画笔尺寸
private static final int TEXT_HEIGHT = 60; // 文本高度
private static final int RATE = 10; // 移动速率
private static final int HANDLER_WHAT = 100;
private static final int FRAME = 1000; // 1000帧
private static final String[] TANGENT_COLORS = {"#7fff00", "#7a67ee", "#ee82ee", "#ffd700", "#1c86ee",
"#8b8b00"}; // 切线颜色
private static final int STATE_READY = 0x0001;
private static final int STATE_RUNNING = 0x0002;
private static final int STATE_STOP = 0x0004;
private static final int STATE_TOUCH = 0x0010;
private Path mBezierPath = null; // 贝塞尔曲线路径
private Paint mBezierPaint = null; // 贝塞尔曲线画笔
private Paint mMovingPaint = null; // 移动点画笔
private Paint mControlPaint = null; // 控制点画笔
private Paint mTangentPaint = null; // 切线画笔
private Paint mLinePaint = null; // 固定线画笔
private Paint mTextPointPaint = null; // 点画笔
private Paint mTextPaint = null; // 文字画笔
private ArrayList mBezierPoints = null; // 贝塞尔曲线点集
private PointF mBezierPoint = null; // 贝塞尔曲线移动点
private ArrayList mControlPoints = null; // 控制点集
private ArrayList<ArrayList<ArrayList>> mTangentPoints; // 切线点集
private ArrayList<ArrayList> mInstantTangentPoints;
private int mR = 0; // 移动速率
private int mRate = RATE; // 速率
private int mState; // 状态
private boolean mLoop = false; // 设置是否循环
private boolean mTangent = true; // 设置是否显示切线
private int mWidth = 0, mHe
安卓属性动画
安卓几种属性动画
rotateButton = (Button)findViewById(R.id.rotateButton);
scaleButton = (Button)findViewById(R.id.scaleButton);
alphaButton = (Button)findViewById(R.id.alphaButton);
translateButton = (Button)findViewById(R.id.translateButton);
image1 = (ImageView)findViewById(R.id.image1);
image2 = (ImageView)findViewById(R.id.image2);
image3 = (ImageView)findViewById(R.id.image3);
image4 = (ImageView)findViewById(R.id.image4);
image5 = (ImageView)findViewById(R.id.image5);
rotateButton.setOnClickListener(new RotateButtonListener());
scaleButton.setOnClickListener(new ScaleButtonListener());
alphaButton.setOnClickListener(new AlphaButtonListener());
translateButton.setOnClickListener(new TranslateButtonListener());
}
class AlphaButtonListener implements View.OnClickListener {
public void onClick(View v) {
//创建一个AnimationSet对象,参数为Boolean型,
//true表示使用Animation的interpolator,false则是使用自己的
AnimationSet animationSet = new AnimationSet(true);
//创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
//设置动画执行的时间
alphaAnimation.setDuration(2000);
//将alphaAnimation对象添加到AnimationSet当中
animationSet.addAnimation(alphaAnimation);
//使用ImageView的startAnimation方法执行动画
image1.startAnimation(animationSet);
image2.startAnimation(animationSet);
image3.startAnimation(animationSet);
image4.startAnimation(animationSet);
image5.startAnimation(animationSet);
Toast.makeText(getApplicationContext(),"消失吧!",Toast.LENGTH_SHORT).show();
}
}
2048游戏源码
2048游戏源码
/**
* 检测当前所有的位置都有数字,且相邻的没有相同的数字
*
* @return
*/
private boolean checkOver()
{
// 检测是否所有位置都有数字
if (!isFull())
{
return false;
}
for (int i = 0; i < mColumn; i++)
{
for (int j = 0; j < mColumn; j++)
{
int index = i * mColumn + j;
// 当前的Item
Game2048Item item = mGame2048Items[index];
// 右边
if ((index + 1) % mColumn != 0)
{
Log.e("TAG", "RIGHT");
// 右边的Item
Game2048Item itemRight = mGame2048Items[index + 1];
if (item.getNumber() == itemRight.getNumber())
return false;
}
// 下边
if ((index + mColumn) < mColumn * mColumn)
{
Log.e("TAG", "DOWN");
Game2048Item itemBottom = mGame2048Items[index + mColumn];
if (item.getNumber() == itemBottom.getNumber())
return false;
}
// 左边
if (index % mColumn != 0)
{
Log.e("TAG", "LEFT");
Game2048Item itemLeft = mGame2048Items[index - 1];
if (itemLeft.getNumber() == item.getNumber())
return false;
}
// 上边
if (index + 1 > mColumn)
{
Log.e("TAG", "UP");
Game2048Item itemTop = mGame2048Items[index - mColumn];
if (item.getNumber() == itemTop.getNumber())
return false;
}
}
}
return true;
}
天气查询APP,Json解析,3种方式
天气查询APP,两种JSON解析方式
/**
* 原始json数据解析
*
*/
// JSONObject jsonObject = new JSONObject(res);
// String reason=jsonObject.getString("reason");
// if (reason.equals("参数不正确")){
// handler.sendEmptyMessage(1);
// return;
// }
// JSONObject result=jsonObject.getJSONObject("result");
// JSONObject realtime=result.getJSONObject("realtime");
// JSONObject life=result.getJSONObject("life");
// JSONObject wind=realtime.getJSONObject("wind");
// String time=realtime.getString("time");
// JSONObject weather=realtime.getJSONObject("weather");
// String date=realtime.getString("date");
// dateStr=time+date;
// weekStr=realtime.getString("week");
// calendarStr=realtime.getString("moon");
// windpowerStr=wind.getString("direct")+" "+wind.getString("power");
// weatherStr=weather.getString("info");
// temperatureStr=weather.getString("temperature");
// JSONObject info=life.getJSONObject("info");
// JSONArray kongtiao=info.getJSONArray("kongtiao");
// JSONArray yundong=info.getJSONArray("yundong");
// JSONArray ziwaixian=info.getJSONArray("ziwaixian");
// ACStr=kongtiao.getString(0)+" "+kongtiao.getString(1);
// sportStr=yundong.getString(0)+" "+yundong.getString(1);
// lightStr=ziwaixian.getString(0)+" "+ziwaixian.getString(1);
/**
* Gson数据解析
*/
WheatherBean wheatherBean=new Gson().fromJson(res,WheatherBean.class);
String reason=wheatherBean.getReason();
if (reason.equals("参数不正确")){
handler.sendEmptyMessage(1);
return;
}
WheatherBean.ResultBean resultBean=wheatherBean.getResult();
WheatherBean.ResultBean.RealtimeBean realtimeBean=resultBean.getRealtime();
WheatherBean.ResultBean.RealtimeBean.WindBean windBean=realtimeBean.getWind();
String time=realtimeBean.getTime();
WheatherBean.ResultBean.RealtimeBean.WeatherBean weatherBean=realtimeBean.getWeather();
String date=realtimeBean.getDate();
dateStr=time+date;
weekStr=realtimeBean.getWeek();
calendarStr=realtimeBean.getMoon();
windpowerStr=windBean.getDirect()+" "+windBean.getPower();
temperatureStr=weatherBean.getTemperature();
weatherStr=weatherBean.getInfo();
WheatherBean.ResultBean.LifeBean lifeBean=resultBean.getLife();
WheatherBean.ResultBean.LifeBean.InfoBean infoBean=lifeBean.getInfo();
List<String> kongtiao=infoBean.getKongtiao();
List<String> yundong=infoBean.getYundong();
List<String> ziwaixian=infoBean.getZiwaixian();
ACStr=kongtiao.get(0)+" "+kongtiao.get(1);
sportStr=yundong.get(0)+" "+yundong.get(1);
lightStr=ziwaixian.get(0)+" "+ziwaixian.get(1);
}